1. [p3.exe] 함수찾기
64,c8,12c,19찾기
이해 못했음 !!!!!!!!! 다시 공부하기...
Ctr + F2
F8 한칸씩 내려가기
F9 실행
Ctr + G 이동
Shift + D 문자열 검색
2. [p4.exe] hello찾기
Shift + D
hello 찾아냄
주소 디스어셈블러 문자열주 문자열
0040150E mov dword ptr ss:[esp+1C] lp4.404000 "hello"
Ctr + G
0040 4000
puch 6F6C6C65 (아스키코드, hello)
3. [p5.exe] 아이디 비밀번호 찾기
0040150E | C74424 0C 00404000 | mov dword ptr ss:[esp+C],p5.404000 | 404000:"admin"
00401516 | C74424 08 06404000 | mov dword ptr ss:[esp+8],p5.404006 | [esp+08]:BaseThreadInitThunk, 404006:"123456"
00404000위치
61
64:6D
696E
=> admin
31323334
35 36
=> 123456
Easy_CrackMe.exe 문제풀기
1. 그냥 실행하여 동작되는 내용 확인
if(id == "admin") {
printf("");
} else{
printf("incorrect Password");
}
return 0;
조건문 있을 것이라고 예상할 수 있음
2. 문자열 Incorrect Password 검색
주소=0040113C
디스어셈블리=push easy_crackme.406030
문자열 주소=00406030
문자열="Incorrect Password"
3. 스택
주요 정보가 스택을 통해 전달, 저장될 수 있음
레지스터와 레지스트리는 다르다!!
x - x - x - x - x - x - x - x - x - x - x (11자리)
ESP : Extended Stack Pointer 레지스터
스택을 가리키는 포인터 역할
스택은 함수 호출 시 지역 변수와 반환 주소
esp+4
esp+5
esp+a
EAX
ESI
EIP
휴대폰(호출) > getDlgItemTextA > f2 (eip고정) > 되돌아와서 f9(실행)
ctrl + f2 재시작
f9 실행
f8 한칸씩 내리기
*jle
비교해서 값이 작을 경우 해당 주소로 점프
암호:Ea5yR3versing
esp+5; 'a'
esp+A; '5y'
esp+10; 'R3versing'
esp+4 ; 'E'