문제

내 말은, 나는 많은 셰어웨어 프로그램의 법적 사용 제약을 깨거나 속이는 알고리즘을 누군가가 어떻게 개발할 수 있는지 항상 궁금했습니다.

단지 호기심 때문입니다.

도움이 되었습니까?

해결책

불법 외에도 매우 복잡한 작업입니다.

공통적 인 방법은 공통적 인 방법으로 프로그램을 분해하여 키나 시리얼 코드가 확인되는 위치를 찾는 것입니다.

심각한 보호 체계는 여러 장소에서 값을 점검하고 나중에 사용하기 위해 시리얼 키에서 중요한 정보를 도출하므로 프로그램이 충돌 할 수 있도록 시리얼 키에서 중요한 정보를 도출하기 때문에 쉽게 말합니다.

균열을 만들려면 검사가 수행되는 모든 지점을 식별하고 조립 코드를 적절하게 수정해야합니다 (종종 조건부 점프를 반전 시키거나 원가 계산 원을 메모리 위치에 저장).

keygen을 만들려면 알고리즘을 이해하고 동일한 계산을 다시 할 수있는 프로그램을 작성해야합니다 (연재물이 매우 간단한 규칙을 가진 MS Office의 기존 버전을 기억합니다. 7, 그래서 Keygen을 쓰는 것은 다소 사소했습니다).

두 활동 모두 응용 프로그램 실행을 디버거로 수행하고 무슨 일이 일어나고 있는지 알아 내려고 노력해야합니다. 운영 체제의 낮은 수준 API를 알아야합니다.

심하게 보호 된 일부 애플리케이션에는 코드가 암호화되어 파일을 분해 할 수 없습니다. 메모리에로드되면 해독되지만 메모리 내 디버거가 시작된 것을 감지하면 시작을 거부합니다.

본질적으로 그것은 매우 깊은 지식, 독창성 및 많은 시간이 필요한 것입니다! 오, 나는 그것이 대부분의 국가에서 불법이라고 언급 했습니까?

더 알고 싶다면 Google은 +ORC Cracking Tutorials를위한 Google이 매우 오래되었고 아마도 쓸모없는 것이지만 그것이 무엇을 의미하는지에 대한 좋은 아이디어를 줄 것입니다.

어쨌든,이 모든 것을 아는 아주 좋은 이유는 자신의 보호 체계를 작성하고 싶다면입니다.

다른 팁

Bad Guys는 Disassembler를 사용하여 키 확인 코드를 검색합니다. 이 작업을 수행하는 방법을 아는 경우 상대적으로 쉽습니다.

그 후 키 확인 코드를 C 또는 다른 언어로 변환합니다 (이 단계는 선택 사항입니다). 키 확인 프로세스를 되돌리면 키 제너레이터가됩니다.

어셈블러를 알고 있다면이 작업을 수행하는 방법을 배우려면 주말이 걸립니다. 몇 년 전에 해냈습니다 (아무 것도 공개 한 적이 없습니다. 게임 개발 작업을위한 연구 일뿐입니다. 깨지기 어려운 열쇠를 작성하려면 사람들이 어떻게 크래킹에 접근하는지 이해해야합니다).

NILS의 우편물은 주요 생성기를 다룹니다. 균열의 경우 일반적으로 분기점을 찾아 논리를 반전 시키거나 조건을 제거합니다. 예를 들어, 소프트웨어가 등록되었는지 확인하기 위해 테스트하고 테스트가 0을 반환 한 다음 그에 따라 점프 할 수 있습니다. 단일 바이트를 수정하여 "점프 0 (je)을 동일하게하는 경우 점프를 0 (je)을 동일하게 변경할 수 있습니다. 또는 원하지 않는 일을하는 코드의 여러 부분에 대해 작동하지 않는 작업을 작성할 수 있습니다.

편집 된 프로그램은 분해 될 수 있고 충분한 시간으로 결정된 사람들은 이진 패치를 개발할 수 있습니다. 균열은 단순히 프로그램이 다르게 행동하도록하는 이진 패치입니다.

첫째, 대부분의 카피 보호 체계는 굉장히 잘 발전하지 않기 때문에 요즘 많은 사람들이 자신의 사람들을 굴리는 것을 보지 못합니다.

이를 수행하는 데 사용되는 몇 가지 방법이 있습니다. 디버거에서 코드를 밟을 수 있는데, 이는 일반적으로 어셈블리에 대한 괜찮은 지식이 필요합니다. 이를 사용하여 프로그램 사본 보호/keygen 메소드가 호출되는 위치에 대한 아이디어를 얻을 수 있습니다. 그것으로, 당신은 분해 된 사람과 같은 것을 사용할 수 있습니다 아이다 프로 코드를보다 면밀히 분석하고 무슨 일이 일어나고 있는지, 어떻게 우회 할 수 있는지 이해하려고 노력하십시오. 날짜 확인에 대한 Noop 지침을 삽입하여 시간 제한 베타를 깨뜨 렸습니다.

그것은 실제로 소프트웨어에 대한 이해와 어셈블리에 대한 기본적인 이해에 달려 있습니다. HAK5 이번 시즌 첫 두 에피소드에서 리버스 엔지니어링 및 크래킹의 기본 사항에 대해 두 부분으로 구성된 시리즈를 수행했습니다. 이것의 진짜 기본이지만 아마도 당신이 찾고있는 것과 정확히 일 것입니다.

크래커는 프로그램을 분해하고 특히 일련 번호가 유효한지 결정하는 알고리즘에 대해 "복사 보호"비트를 찾습니다. 이 코드에서 기능을 잠금 해제하는 데 필요한 비트 패턴을 종종 확인한 다음 생성기를 작성하여 해당 패턴으로 숫자를 만듭니다.

또 다른 대안은 일련 번호가 유효하지 않은 경우 "true"를 반환하는 함수를 찾는 것입니다. 그렇지 않은 경우 "false"가 "false"를 찾은 다음 이진 패치를 개발하여 함수가 항상 "true"를 반환합니다.

다른 모든 것은이 두 가지 아이디어의 변형입니다. 복사 보호입니다 언제나 정의에 따라 브레이크 가능 - 어느 시점에서 실행 가능한 코드로 끝나야하거나 프로세서가 실행할 수 없습니다.

일련 번호를 사용하여 알고리즘을 추출하고 "추측"을 시작하여 긍정적인 응답을 찾을 수 있습니다.컴퓨터는 강력하며 일반적으로 히트를 뱉어내기 시작하는 데 약간의 시간이 걸립니다.

해킹의 경우에는 높은 수준의 프로그램을 단계별로 실행하면서 작동이 중지되는 지점을 찾을 수 있었습니다.그런 다음 성공한 마지막 "Call"로 돌아가서 한 단계씩 실행한 다음 반복합니다.그 당시 복사 방지는 일반적으로 디스크에 쓰고 후속 읽기가 성공했는지 확인하는 것이었습니다(그렇다면 플로피의 일부를 레이저로 구워 쓸 수 없도록 복사 방지가 실패했습니다).

그런 다음 올바른 호출을 찾고 해당 호출에서 올바른 반환 값을 하드코딩하는 것이 문제였습니다.

지금도 비슷할 거라 확신하지만 통화 위치를 숨기기 위해 많은 노력을 기울이고 있습니다.마지막으로 시도한 것은 내가 한 단계씩 진행했던 코드 위에 계속 코드를 로드했기 때문에 포기했고 그 이후로 훨씬 더 복잡해졌을 것이라고 확신합니다.

나는 왜 그들이 바이너리에 이진에 어딘가에 저장되거나 (암호화 및 난독 화 된), 전체 바이너리에 더 잘 배포되는 개인화 된 바이너리를 배포하지 않는 이유가 궁금합니다. Afaik Apple 그러나 파일에서 이름을 제거하기에는 너무 쉽습니다.

나는 각 균열이 다르다고 가정하지만 대부분의 경우 누군가가 디버거에서 문제의 응용 프로그램을 추적하는 데 많은 시간을 소비한다고 생각합니다.

직렬 생성기는 일련 번호를 확인하는 알고리즘을 분석하여 유효성과 리버스 엔지니어를 분석하여 한 걸음 더 나아갑니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top