c 로 짠거 디스어셈블해보면...

kkojiband의 이미지

그냥 어셈으로 짜면 별상관없겠지만, c로 짠걸 code 만 따로 떼내어서 디스어셈블 해보니까 4바이트 짜리 변수나 포인터 등의 상위 자릿수들이 0으로 채워져서 디스어셈블시 이상한 명령어를 만들어내네요...

0000 등의 명령어들...

이런걸 해결할 방법이 없을까요?

간단한 c프로그램을 컴파일하고, 다른거 다 빼고 code 만 떼서 부트로더로 읽어들여보니까 위의 이상한 명령어들때문에 실행이 안되네요...

이걸 해결할 방법이 없을까요?

hex 상태로 편집이 가능하다면 될꺼같기는 한데...왠지 노가다인듯...-_-;

혹시 좋은 방법 있으신 분 좀 알려주세요~

익명 사용자의 이미지

디스어셈블 과정에 뭔가 문제가 있나 봅니다. objdump -d 하면 코드 섹션만 디스어셈블을 하게 되는데요.

Necromancer의 이미지

소스있다면 gcc -S를 쓰세요.

그게 훨씬 낫습니다.

소스 없이 디스어셈블한다면, ELF구조와 로드방식에 대해 알아보고,

특정 위치부터 디스어셈블를 해야 할겁니다.

Written By the Black Knight of Destruction

익명 사용자의 이미지

흑기사 wrote:
소스 없이 디스어셈블한다면, ELF구조와 로드방식에 대해 알아보고,

특정 위치부터 디스어셈블를 해야 할겁니다.


GNU binutils안에 있는 objdump로 디스어셈블하면 구조를 몰라도 상관 없습니다. 그리고 거의 대부분의 디스어셈블러는 내부 구조를 몰라도 디스어셈블을 정상적으로 해줍니다.