문제

나의 질문은 매우 간단하다:당신은 실행 파일로 출력하는"액세스 권한이 부여"또는"액세스 거부된"고 악한 사람을 이해하려고 알고리즘이나 패치 내장하기 위해서 당신이 말하는"액세스 권한이 부여"모든 시간입니다.

이 소개 한 후,당신은 당신 있게 무슨니다.그가 균열 Diablo3 면 그것은가?내가 진정 할 수 있습의 걱정을 나는 하나의 그래합니다.나의 목표는 crackmes.

Crackmes 에서 찾을 수 있습니다-예를 들어-www.crackmes.de.A Crackme 조금 실행하는(가)포함되어 알고리즘을 확인 시리얼 출력"액세스 권한이 부여"또는"액세스 거부에 따라"serial.목표를 이행 출력이"접속"부여 모든 시간입니다.이 방법을 사용하도록 허용된 제한될 수 있습니 저자가 없 패치를 적용하고,없는 분해 또는 아무것도 포함할 수 있습지로 바이너리,objdump 및 진 편집기입니다.균열 crackmes 입 한 부분의 재미를 확실히,그러나,프로그래머로서,나를 만들 수 있는 방법 crackmes 는 것은 어렵습니다.

기본적으로,생각 crackme 의 두 가지 주요 부분으로 구성되어 있:특정 직렬 인증 및 주변 코드입니다.

을 만드는 일련 verification 하드 트랙을 사용하여 어셈블리는 매우 가능,예를 들어,나는 아이디어를 직렬로 입력을 시뮬레이션 마이크로프로세서는 종료해야에 특정 상태를 얻기 위해서는 시리얼 받아들여집니다.다른 한편으로,하나는 성장할 수 있도 저렴하고 배우상에 대해 강력한 암호 보호하는 방법 이 부분입니다.따라서,이를 충분히 열심히하는 공격자를 만들려고 하면 패치를 실행하지 않아야 tha t 어렵습니다.

그러나,더 어려운 부분은 보리를 갖고 있습니다.우리 가정이 완벽하게 안전한 직렬 인증는 되돌릴 수 없습니다 어떻게든다(물론 제가 알고 되돌릴 수 있습니다,당신은 rip 부품의 바이너리도 균열과 던져 임의의 일련 번호에서 그것은 때까지).우리는 어떻게 막을 공격에서 그냥 무시에 점프 이진하기 위해서 우리의 이진을 받아들어요?

나이 검색되었습니다 이 주제에 대한 비트이지만,대부분의 결과에 바이너리 안전,자 검증하는 바이너리와 같은 것들이 결국 문서에서는 시도에 대한 공격을 방지하기 위해 운영체제 시스템을 사용하여 손상될 수 있습니다.로그인하여 특정 바이너리 및 검증에 그들은 서명으로 커널이다.

내 생각에 현재 이루어져 있다:

  • 확인을 명시적 위치에서 이진을 이동합니다.
  • 체크섬의 부분을 바이너리와 비교 체크 계산된 런타임이기도 합니다.
  • 이 긍정적이고 부정적 런타임 검사를 위한 함수 코드입니다.와 부작용에 시리얼로 확인합니다.:)

은 당신이 생각할 수 있는 방법을 더 괴롭히는 가능한 공격자 이?(물론,할 수 없게,영원히 somewhen,모든 검사를 깨진 것입니다하지 않는 한,당신은 휴식을 관리하 checksum-발전기에 의해할 수 있는을 포함하는 올바른 체크섬 프로그램에서 프로그램 자체,hehe)

도움이 되었습니까?

해결책

당신이"반대로-반전하는 기술".예술은 기본적으로합니다.더 악화되는 경우에도 당신이 춤추는 초보자가는"반대로-반대로 후진 플러그인에 대해"올리고 IDA Pro 는 그들은 다운로드할 수 있고 바이패스의 대책을 마련할 수 있습니다.

응 조치에는 다음이 포함됩니다 디버거에 의하여 탐지 트랩 디버거 Api 또는 검출하는 싱글 스테핑'.할 수 있는 코드를 삽입한 후에 검출하는 디버거 도둑질,계속 기능하지만,행동을 시작합에서 임의의 시대 훨씬 이후에 프로그램입니다.그것은 정말이 고양이와 마우스 게임 및 크래커는 뜻깊습니다.

체크아웃...http://www.openrce.org/reference_library/anti_reversing -일부의 수 있습니다.

http://www.amazon.com/Reversing-Secrets-Engineering-Eldad-Eilam/dp/0764574817/ -이 책은 정말 좋은 반대로-반전하는 정보와 단계를 통해 기술이 있습니다.시작하기 좋은 장소 당신이 얻는 경우 int 역에서 일반적입니다.

다른 팁

내가 믿는 이러한 것들은 일반적으로 더 많은 문제보다 그들이 가치가있다.

당신이 많은 노력을 보낼 코드 작성을 보호하는 바이너리입니다.나쁜 사람을 보내고 덜 노력은 그것을 균열(그들은 일반적으로 더 많은 경험보다)및 릴리스 균열 모든 사람을 무시할 수 있습을 보호합니다.유일한 사람을 괴롭히 사람들은 정직한 사람은 불편에 의해 보호.

그냥 보면 불법 복제로 비용-비즈니스의 증가 비용의 불법 소프트웨어가 영면 모든 지원만 지불을 위해 고객입니다.

가 TPM 기술: tpm wikipedia

그것은 당신을 저장할 암호화를 확인 합계 바이너리에서 특별한 칩을 수 있는 행동으로 한 방법이 확인합니다.

참고:TPM 는 종류의 나쁜 비난하기 때문에 그것을 사용될 수 있습 DRM.하지만 전문가가 현장에서는 종류의 불공정,그리고 심지어는 open-TPM 그룹 허용 리눅스 사용자를 제어하는 방법을 정확하게 그들의 TPM 칩이 사용됩니다.

하나의 강력한 솔루션이 이 문제 신뢰할 수 있는 컴퓨팅.기본적으로 당신이 암호화 응용 프로그램 전송하는 암호 해독 키 특수한 칩이( 신뢰할 수 있는 플랫폼은 모듈다),칩만 해독하면 응용 프로그램을 실행하고 있는지 확인 컴퓨터에서는 신뢰할 수 있는 상태:더 메모리자/편집자가 없는 디버거 등입니다.기본적으로,필요한 특별한 하드웨어를 그냥을 볼 수 있도록 해독 프로그램 코드입니다.

그래서,당신이 원하는 프로그램을 작성하는지에서 시작 부분에 저장 메모리,그 후 검색하기에서 그것을 디스크에 있습니다.의 경우 올바른 키를 소프트웨어 작동합니다.면 그것은 잘못된 핵심 소프트웨어 충돌합니다.의 목표는 그것의 하드를 위해 해적을 생성하는 작업을 핵심,그리고 그것의 하드 프로그램을 패치를 일으로 허가되지 않은 핵심이다.

이것을 달성할 수 있는 특별한 사정이 없는 하드웨어입니다.고려 우리의 유전자 코드입니다.그것은 작품을 기반으로 물리학의이다.우리가 해킹을 시도하고 그것을 만들고,마약,etc., 고 우리는 비참하게 실패,일반적으로 만들기의 톤이 바람직하지 못한 부작용-효과기 때문에,우리는 아직 완전히 반대로 설계된 복잡한"세계에서"이는 유전자"코드는"진화하여 작동합니다.기본적으로 실행하는 경우,모든 것에는 일반적인 프로세서(일반적인"세상")의 모든 액세스,그것은 거의 불가능하여 작성 등의 보안 코드에 의해 설명되는 것과 같이 현재 소프트웨어는 이렇게 쉽니다.

을 달성하는 보안 소프트웨어에서,당신은 기본적으로는 것을 작성해야 자신의 충분히 복잡한 플랫폼을 다른 사람이 완전하고 철저하게 반대 엔지니어를 수정하기 위해 동작 코드의 없이 예측할 수 없는 부작용이 있습니다.면 플랫폼은 리버스 엔지니어링,그러나,당신을 다시 원점으로하고 있습니다.

Catch 은,당신 플랫폼은 아마가에서 실행하는 일반적인 하드웨어 만드는 귀하의 플랫폼에 쉽게하는 역엔지니어링,차례로 만든 코드를 조금 더 쉽게 리버스 엔지니어링.물론 수 있는 그 의미하는 바가 발생한 복잡성의 수준에 필요한 플랫폼을 충분히 반대하기 어렵 엔지니어이다.

무엇을 충분히 복잡한 소프트웨어 플랫폼을 보는가?예를 들어,아마도 모든 후 6 추가 작업,7 한 결과를 반환합니다 곱하여 파이로 나누어의 제곱근 로그의 탄성계수는 5 개의 차의 총 수의 빼기와 곱하기 작업을 수행한 이후로 시스템을 초기화.것 플랫폼을 추적 할 수있다 사람들의 숫자가 독립적으로,것으로 코드 자체를 디코딩하기 위해서는 올바른 결과를 얻을 수 있습니다.그래서,당신의 코드 작성된 것이 지식을 바탕으로 복잡한 기본 행동의 플랫폼을 설계되었습니다.네,그것을 먹을 것이다 프로세서 사이클,그러나 누군가가 있을 리버스 엔지니어링 작은 놀라운 행동과 재 엔지니어로 그것이 어떤 새로운드 그것이 제대로 작동합니다.또한,자신의 코드는 어려울 것에 한 번 변경 쓰기 때문에,그것은 것으로 축소 복잡성이 돌이킬 수없는 각 라인에 따라서 일어난 모든 것에 있다.의 코스가 될 것입니다 훨씬 더 복잡성에 충분히 안전한 플랫폼을,그러나 점은 누군가는 리버스 엔지니어링 플랫폼을 하기 전에 그들은 수 있는 리버스 엔지니어링 및 코드를 수정하지 않고,쇠약 side-effects.

훌륭한 문서 사본을 보호하고 보호 보호 을 유지하는 해적에 Bay:을 구현하는 균열 보호를 위한 스파:올해의 용

가장 흥미로운 아이디어에서 언급이 있지 않은 아직 언급되는 계단식 오류가-당신이 체크를 수정하는 하나의 바이트는 원인이 또 다른 체크섬 실패합니다.결국 하나의 체크 인 시스템은 충돌하거나 뭔가 이상하다.이것은 해적을 시도는 당신의 프로그램 보이 불안정하게 만든 원인이 발생할 길에서 충돌이 발생합니다.

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