답변
첫 번째 단계는 사용자가 제공하는 게시 된 API에 필요한 기호를 제외하고 모든 기호 라이브러리를 제거하는 것입니다.
"표준"디스 어셈블리 방지 기술 (명령 중간으로 뛰어 오거나 코드의 일부를 암호화하고 요청시 암호를 해독하는 등)은 공유 라이브러리에 적용됩니다. 다른 기술들, 예를 들어. 디버거에서 실행 중이며 실패했음을 감지하면 실제로 적용되지 않습니다 (최종 사용자를 완전히 미친 듯이 바라지 않는 한).
최종 사용자가 라이브러리를 사용하여 개발중인 응용 프로그램을 디버깅 할 수있게하려는 경우 난독 화가 대부분 상실된 원인입니다. 귀하의 노력은 실제로 입니다.은 기능과 지원을 제공하는 데 훨씬 낫습니다.
리버스 엔지니어링 보호는 많은 형태로 제공, 여기에 몇 가지 있습니다 : 같은 디버거 또는 가상 머신 및 중단에서 실행되는 것으로
검출 역전 환경. 이것은 분석가가 무슨 일이 일어나고 있는지 파악할 수 없게합니다. 일반적으로 악성 코드가 사용합니다. 일반적인 트릭은 실제 CPU보다 VMWare에서 다르게 동작하는 문서화되지 않은 명령어를 실행하는 것입니다.
이진 형식을 잘못 지정하여 예 : ELF 섹션이 누락되었습니다. 정상적인 분석 도구가 파일을 열 수 없도록하려고합니다. 리눅스에서 이것은 libbfd가 이해하지 못하는 것을 수행함을 의미합니다 (그러나 capstone과 같은 다른 라이브러리는 여전히 작동 할 수 있습니다).
컴파일러가 생성하지 않는 것처럼 보이도록 이진 기호와 코드 블록을 무작위 화합니다. 이로 인해 디 컴파일 (원래 소스 코드에서의 추측)이 더 어려워집니다. 이러한 종류의 보호 기능을 갖춘 게임 같은 일부 상용 프로그램이 배포됩니다.
즉석에서 변경되는 (예 :로드 될 때 메모리로 압축 해제되는) 다형 코드. 가장 정교한 도구는 맬웨어가 사용하도록 설계되었으며 패커라고합니다 (맬웨어 방지 도구로 플래그 지정하려는 경우가 아니면 제외). 또한 UPX http://upx.sourceforge.net/ (UPX'ing을 실행 취소하는 도구 제공)과 같은 학문적 인 것들도 있습니다.
_italic_such 코드 중간 부분으로 건너 뛰거나 코드 일부를 암호화하고 on-demand_italic_의 암호를 해독하는 방법 코드를 어떻게 암호화/해독합니까? 작은 샘플을 제공해 주시겠습니까? – JohnH