2016-07-25 1 views
0

통역 마하-O내가 OS X에있는 도크의 모양과 수리를 시도하고 데이터

나는 독의 마하-O 실행 파일에서 원시 데이터를 가지고,하지만 난 그들에 대해 잘 모른다. Dock이 실제로 그려지는 세그먼트/섹션을 어디에서 찾을 수 있는지 파악하려고합니다. 예를 들어, __DATA,__mod_init_func__DATA,__cfstring과 같은 모든 종류의 섹션을 볼 수 있으며, 내가 원하는 데이터가 이러한 섹션 (또는 특정 세그먼트) 중 어느 섹션에 있는지 쉽게 알 수있는 방법이 있는지 궁금합니다. 데이터를보다 읽기 쉬운 형식으로 디 컴파일하십시오.

+0

실제로 어떤 종류의 데이터를 찾고 있는지 분명하지 않습니다. 코드와 자산은 두 가지 관련성이 있습니다. 자산 (주로 이미지)은 "Resources"폴더에서 간단히 찾을 수 있습니다. 코드는 대개 __TEXT 세그먼트에 저장되며 직접 디 컴파일 할 수 없습니다. 어떤 라이브러리 함수가 호출되는지 알아 내려면'nm'을 실행하고 찾으려는 동작처럼 들리는 함수/클래스를 찾을 때까지 목록을 살펴보십시오. 코드가 실제로 무엇을하는지 알아 내기 위해서는 그것을 (otool -tV 만) 해체 할 수 있지만, 그렇게하면 어셈블리가 많이 필요합니다. – Siguza

+0

Hopper와 같은 diassembler를 사용하여 이진이 어떻게 구성되어 있는지 생각해보십시오. –

답변

1

mach-o 파일에 대한 모든 것을 이해하지 않으면 실제로 "디 컴파일"할 수 없습니다. 메서드 및 인스턴스와 같은 원시 데이터에서 "사람이 읽을 수있는"내용을 얻을 수 있습니다. 나는이 문제를 이해하기위한 다른 도구를 제안

-(id)anInstance:(id)arg1; 

:

-[AClass anInstance:] 

뭔가처럼 될 것입니다. 이 사용할 수있는 몇 가지 명령 줄은 다음과 같습니다

nm /path/to/mach-o // Prints all the strings of a Mach-O Executable 

hexdump -C /path/to/mach-o // Shows the Hexadecimal Code of a Mach-O Executable 

otool -t /path/to/mach-o // Outputs the raw (Hexadecimal) "_TEXT,__text" section of a Mach-O Executable (Compare this with the hexdump -C command) 
otool -tV /path/to/mach-o // Outputs the converted (Human Readable-ish) "__TEXT,__text" section of a Mach-O Executable 

은 그러나 당신이 정말로 마하-O

을에 대한 모든 것을 이해하고 싶다면 나는에서 호퍼를 다운로드하는 것이 좋습니다 : 당신의 바이트를 보여주는 좋은 https://www.hopperapp.com mach-o 바이너리와 그 이유. 그런 다음 여러분은 여기를보실 수 있습니다 : https://www3.nd.edu/~dthain/courses/cse40243/fall2015/intel-intro.html 이것은 mach-o가 어떻게 컴파일되는지 이해하고 실행 방법을 읽을 수있는 방법을 가르쳐 줄 것입니다.

예 :

1. Open Hopper and drag and drop in the Mach-O executable then wait for it to load. 

2. Execute "otool -tV /path/to/mach-o" in Terminal.app 

넌 호퍼의 출력 단자 차이를 알 함께 차이 조각을 시작할 수있다. 그런 다음 제공된 website을 열고 모든 출력 기능이 무엇인지 배울 수 있습니다.

나는 이것이 당신을 조금도 움츠고 지식 검색을 시작하게되기를 바랍니다.

귀하의 환영합니다.