* 원하는 코드를 빨리 찾아내는 4가지 방법
1) 명령어 하나씩 직접 실행하면서 원하는 위치를 찾아가는 방법
2) All referenced text strings를 통해 문자열 검색
3) API 검색 후 호출 코드에 BP - All intermodular calls 이용
4) API 코드에 직접 BP - Name in all modules 이용(Packer, Protecter 이용 시 API 호출 목록이 보이지 않으므로 로딩된 라이브러리(DLL 코드)에 직접 BP
- 3, 4의 차이는 직접 이 프로그램에서 호출한 곳에 BP를 거느냐, DLL 내 API에 BP를 걸어 사용할 때 잡히게 할거냐 의 차이
- API에 BP걸 때 이용하는 기능 구분
All intermodular calls |
코드에서 호출되는 모든 API 함수 보기 |
Name in all modules |
모든 API 함수 보기 |
* Label과 Comment의 차이
- Label 은 메모리 값에 이름을 붙어주는 것이므로 추후 해당 메모리를 CALL할 때 붙여준 이름으로 나타난다.
- Comment는 말그대로 해당하는 한 줄에 주석을 다는 것
* 범용 레지스터 쓰임새
- EAX : 주로 함수의 return값이나 사칙연산의 결과값 저장
- EBX
- ECX : 반복문의 count를 저장, 반복문이 돌때마다 1씩 감소
- EDX
- ESP : Stack pointer
- EBP : Stack frame을 위한 레지스터로 ESP의 값을 저장해두는 곳
- ESI : Source pointer 로서 값 복사를 위해 주로 사용
- EDI : Destination pointer 로서 값 복사를 위해 주로 사용
* 바이트 수
BYTE = 1바이트
WORD = 2바이트
DWORD = 4바이트
* Calling Convention (함수 호출 규약)
cdecl : Caller가 스택 정리
stdcall : Callee가 스택 정리
'Hacking > Reversing' 카테고리의 다른 글
Ollydbg 창 설명 및 기초 (0) | 2019.02.10 |
---|---|
Visual Basic 파일 분석 (0) | 2018.11.18 |
immunity debugger가 바로 꺼질 때 해결 (2) | 2016.01.03 |