목록Reversing (3)
hy30nq's blog
리버스 엔지니어링이나 바이너리 익스플로잇 과정에서 main 함수의 주소를 추적하거나, Base 주소를 활용하여 함수의 실제 메모리 주소를 계산하는 일은 매우 흔합니다. 이 글에서는 GDB와 PwnDbg를 활용하여 main 함수의 주소를 찾는 방법과, IDA와의 연동을 통해 이를 확인하는 과정을 설명합니다. 목차GDB와 PwnDbg 소개메모리 매핑 정보 확인 (vmmap)Base 주소와 main 함수 오프셋 추출IDA를 활용한 정확한 함수 오프셋 찾기계산을 통한 main 함수 메모리 주소 추적실제 예제와 코드 설명결론1. GDB와 PwnDbg 소개GDB(GNU Debugger)는 Linux 환경에서 널리 사용되는 디버거로, 실행 중인 프로그램의 상태를 분석하거나 메모리와 레지스터를 조작할 수 있습니다. P..

참고 자료https://www.youtube.com/watch?v=DvuWTPqmD8I 스택: 메모리 한 부분: LIFO 방식 동작 자료 구조: PUSH, POP택은 한 방향으로만 데이터가 쌓임PUSH : 스택의 주소 4바이트 감소POP : 스택의 주소 4바이트 증가(32비트에서)→ 스택 구조 위에 있는 커널 영역을 침범하지 않기 위해서 프로그램에서는 스택은 서브루틴(함수)으로 인자 전달, 서부루틴 내부에서 사용하는 지역변수가 저장되는 공간 제공, 서부루틴이 종료될 때 되돌아가야 할 주소 저장 역할 수행→ 함수를 호출할 때 정확하게 인자를 스택으로 PUSH하고 서브루틴이 종료될 때 복귀 주소를 스에서 POP하는 것을 확인 가능 스택 프레임: 서브루틴(함수)이 가지는 자신만의 스택 영역: 서브루틴 내부에..

실행gdb "파일명"인텔형 어셈블리어로 보기set disassembly-flavor intel메인 함수 디스어셈블하기disas main브레이크 포인트 걸기b *main 메인 함수에 브레이크 포인트b *0x00000000004005bd 특정 주소에 브레이크 포인트b "숫자" eip로부터 상대적 위치에 브레이크 포인트브레이크 포인트 삭제deletedelete "번호"실행하기run "args" 처음부터 실행하기continue 멈춘 부분부터 계속 실행하기ni 한 스탭 실행 후 멈추기정보 확인info reg 레지스터 확인info reg "레지스터" 특정 레지스터 확인info break 브레이크 포인트 확인x/t "메모리 주소" 2진수로 확인하기 x/o "메모리 주소" 8진수로 확인하기 x/d "메모리 주소" 10..