2012-12-19 2 views

답변

3

실행 파일을 분해 할 수 있도록 어셈블러에 대해 알아야합니까?

아니, 필요한 것은 디스어셈블러/디버거입니다.

무엇이 프로그램을하고 있는지 알고 계십니까?

예. 디스어셈블러가 디스 어셈블리를 생성하면 디스 어셈블리를 읽는 방법과 다양한 명령어가 수행하는 작업을 알아야합니다. 어떤 레지스터가 존재하는지, 메모리 모델이 무엇인지, 어떤 특수 함수 레지스터가 존재하는지 등과 같은 CPU 아키텍처에 대해서도 이해해야합니다. 또한 실행 파일이 실행중인 운영 체제에 대한 기본적인 이해가 있어야합니다 (보호 된) 운영 체제 계층으로의 특정 서브 루틴 호출 또는 호출을 이해합니다.

이 모든 것은 시스템에 따라 다릅니다. 좋은 시작점은 일반적으로 아키텍처에 대한 섹션과 명령어 세트를 설명하는 참조 섹션이 포함 된 구체적인 CPU의 데이터 시트/매뉴얼입니다.

0

해체 된 프로그램을 읽는 방법에 대한 해결 방법이 있습니다. IDA 디스어셈블러를 사용하는 경우 이전에 캡처 한 원시 어셈블리에서 C 스타일 코드를 작성할 수있는 HexRays 플러그인을 적용 할 수 있습니다 (관심있는 함수 코드를 열고 F5 키를 누름). 어셈블러를 전혀 모른다면 유용 할 수 있습니다. 그러나 제 경험에 따르면 HexRay는 완벽하지 않으며 때때로 잘못된 C 스타일 코드를 생성 할 수 있으며 때로는 코드를 생성하지 못할 수도 있습니다. 그래서 이것으로 인해 코드 분석에서 보조 도구로만 사용합니다. 그러나 어셈블러를 전혀 모르는 경우에는 어셈블러를 사용하려고 할 수 있습니다.

관련 문제