-
IDA 사용법 및 문법해킹/리버싱 이론 2024. 10. 7. 09:34
Dreamhack의 Exercise : Helloworld 강의를 정리함.
IDA 실행 후 exe 파일 드래그 -> 바로 ok
정적분석
main함수를 찾기 위해 문자열 검색 (shift+F12) ->더블 클릭하여 따라감
참조하는 함수 찾기 : 스트링 클릭 후 우클릭 -> List cross reference to... -> 해당 변수를 참조하는 모든 주소가 출력 됨.
main함수를 찾았으면 디컴파일 F5
*_acrt_iob_func 함수 : 스트림을 가져옴 , 인자로 1이 들어갈 경우 stdout, 0이면 stdin
숫자를 문자로 변환 -> 숫자에 커서올리고 r
a dup(b) -> b 가 a번 반복됨
data 주소에서 (Shift+E) -> hex string으로 export 가능 -> python의 bytes.fromhex사용해 bytes로 불러오기 이용
xor은 교환,결합이 가능해서 양변에 같은 값을 연산 할 수 있다.
GUI프로그램
WinMain함수를 찾아야함
윈도우를 생성할 때 사용하는 CreateWindowExW 함수를 찾으면 XRef를 통해 WinMain을 찾을 수 있음
wcex.lpfnWndProc 윈도우의 메시지 처리를 위한 콜백 함수를 등록하는 것으로 윈도우를 생성하고 메시지를 처리할 때 여기에 등록한 함수를 사용하여 처리합니다.
바이너리 패치 IDA view(assembly단)에서 상단 edit-Patch-assemble... 수정 후 edit- patch-patch apply patches ~~ 클릭
동적분석
중단점 설정 단축키 F2
디버깅 시작, 프로그램을 계속 실행 F9 -> local windows debugger
디버깅 중단 (Ctrl+F2)
한 단계 실행 (Step Over) F8 : 함수 내부로는 진입 x
함수 내부로 진입(Step Into) F7
Continue F9
디버깅은 mac이라 local debugger로 디버깅 불가능 원격 디버깅 설정 필요
'해킹 > 리버싱 이론' 카테고리의 다른 글
03 - x86 Assembly (1) 2024.10.06 02 - 컴퓨터 구조 / Window memory layout (2) 2024.10.06 01 - 리버싱 (2) 2024.10.06