-
C 언어 실행 파일만 남았을 때 디스어셈블(Disassemble)-디컴파일링(Decompile) 방법과 사이트 __ 바이너리 파일 C 파일로 binary file to CSystem Programming 2024. 6. 3. 22:36반응형
실수로 실행 파일만 남기고 원본 코드를 소실한 경우,
디스어셈블-디컴파일링을 시도해볼 수 있다.
하지만 그 전에 앞서,
디스어셈블은 간단하지만, 디컴파일링은 일대일 대응이 아니라 완벽하게 되돌릴 수 없음을 인지하여야 한다.
Disassemble
아래는 code라는 실행파일을 output.txt에 출력하는 커맨드이다.
objdump -d ./code -M intel > output.txt
> output.txt 구문을 없애서 커맨드 창에 바로 출력할 수도 있다.
이후 이 파일을 디컴파일링 해야 우리가 아는 c언어로 돌아올 수 있다.
Decompile
이후에는 인공지능을 이용하여 디컴파일링을 해야 한다.
아까 출력받은 어셈블리 코드를 Chat GPT나 다른 디컴파일러에 넣어 디컴파일을 시도해볼 수 있다.
거의 유로지만, 나름 부분적으로 무료였던 사이트는 아래와 같다.
CodeConvert AI - Convert code with a click of a button
With automated code conversion, you don't have to spend hours manually rewriting code in a different language.
www.codeconvert.ai
사이트에 들어가면 아래와 같이 try for free가 나온다.
변경할 언어를 선택할 수 있는데, Assembly to C로 한다.
하지만 어쩄든 디컴파일은 완벽하게 원본으로 복구할 수 없다.
일부 복구한 코드를 조금 더 수정하거나, Chat GPT에게 수정을 요구해볼 수 있을 것이다.
여러 사이트를 사용하여 합하는 것도 도움이 된다.
Reference
wonder_land. (2024). [Reversing] 1. 바이너리(Binary). 2024. 06. 03 검색
https://velog.io/@wonder_land/Reversing-1.-%EB%B0%94%EC%9D%B4%EB%84%88%EB%A6%ACBinary
반응형'System Programming' 카테고리의 다른 글
tar.gz 압축 풀기 (리눅스 Linux/라즈베리파이) (0) 2024.06.15 [시스템 프로그래밍] 어셈블리 연산 기초 (load, store, mov, add, jne) (0) 2024.06.13 [Linux] Window에서 리눅스 작업 환경 / 작업 폴더 들어가기 (Ubuntu on Windows) (0) 2024.06.01 VNC Viewer __ 노트북을 (라즈베리파이) 모니터로 쓰기 / 모니터 없이 라즈베리파이 화면 보는 법, VNC 설정, 안될 때 (0) 2024.05.27 라즈베리파이 hdmi와 모니터 없이 원격으로 접속하기 (최초 한 번 세팅 이후) / 모바일 핫스팟 사용 (0) 2024.05.03