완료됨
환경? 관련 질문입니다.

안녕하세요, 문제를 어느정도 파악하고 코드를 작성하려고 하는데 궁금한 점이 있어서 여쭤봅니다!
제가 맞게 접근했는지는 잘 모르겠으나 server.py 파일의 answer 계산 과정을 어셈블리코드로 작성하여서 바이너리를 input으로 주면 될 것 같은데 이때 서버가 x86인지 x64인지 정보가 없어 함수로 부터 넘어온 argument를 받아올때 스택으로부터 받아와야 하는지, 혹은 레지스터로부터 받아와야 하는지 등 어떤식으로 코드를 작성해야할지 잘 모르겠습니다. 혹시 이런거를 파악하는 방법이 있을까요? (아니면 애초에 뭔가 잘못 접근하고 있는걸까요...?)

추가적으로 쉘코드 작성하는 것이 처음이라 조사를 해보니

(1) C언어로 실행파일 작성후 gdb로 분석
(2) (1)의 결과를 바탕으로 어셈블리 코드 작성
(3) objdump로 생성된 기계어 코드를 이용

위와 같은 절차로 작성하는 것이 일반적인 것 같은데, 문제를 해결하기위해서는 코드가 길어짐에따라 직접 쉘코드를 입력하기에는 문제가 있을 것 같은데 혹시 이를 복사한다거나 하는 기능이나 팁이 있을까요?

감사합니다!

#reversing
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
avatar
snwo
2024 Invitational Contenders
avatar
snwo
2024 Invitational Contenders

Makefile 을 보시면 컴파일 옵션이 있습니다. -m32 를 지정해주지 않으면 대부분 64bit 로 컴파일될껍니다.
c코드를 어셈으로 변환해주는 사이트도 있고, 어셈을 기계어로 변환해주는 사이트도 있습니다!

2021.03.03. 11:39