2013-07-08 2 views
0

그렇게 할 방법이 있습니까? 나는 .c에서 변환 된 .o 파일을 가지고 있으며, 이제 반대 방향으로 가고 싶습니다. 나는 Boomerang을 사용해 보았지만 여전히 약간 혼란 스럽다. 그 결과는 단지 리턴 텍스트 함수이다. \.o 파일에서 소스 코드 가져 오기

답변

2

오브젝트 파일에 불필요한 기호 나 디버그 정보가없고 최적화를 통해 컴파일 되었다면 아마 원래의 C 코드에 몹시 가깝게되지는 않을 것입니다. 그러나 기계 코드에서 기본적인 제어 흐름을 이해하는 것은 여전히 ​​가능해야합니다.

objdump -dax -Mintel file.o과 같은 것을 사용하여 디스 어셈블리를 표시하십시오.

여전히 파일에 기호가 있고 최적화없이 컴파일 된 경우 각 함수와 함수 호출을 명확하게 표시해야합니다.

+0

함수 이름, 함수 호출을 볼 수 있지만 잘 포맷되어 있지 않더라도 무슨 일이 일어나는지 알아야합니다. '는 2cc : : 그 명령을 실행할 때 지금이 내가 볼 수있는 부분입니다 \t 8B 45 E0를 \t mov 인 EAX, DWORD PTR [EBP-가 0x20] 2cf : \t 83 45 E0 01 \t 추가 DWORD PTR [EBP- 가 0x20, 0x1로 2D3 : \t C7 44 24 10 01 00 00 \t MOV의 DWORD의 PTR [ESP +은 0x10, 0x1로 2DA : \t 00 2dB : \t 89 44 24 0C \t MOV의 DWORD의 PTR [ESP +에서 0xc], EAX ' – nonion

+0

일부 어셈블러를 배우는 것이 가장 쉽습니다! 매우 일반적인 구조가 많이 있습니다. 몇 가지를 인식하면 매우 빠르게 이해할 수 있습니다. 이것에 대해 좋은 방법은 자신의 C 프로그램의 출력을 검사하고 그로부터 배울 수 있습니다 ... –

+0

그래서 그것을 빨리 할 방법이 없습니까? 코드 자체는 그리 길지 않습니다 (전체 파일은 아마도 100 줄입니다), 나는 소스 코드를 얻기 위해 프로그램이나 뭔가가 필요합니다 : \ – nonion

관련 문제