크랙미를 풀던중 unpack-me 로 넘어가게 되었는데, 패킹이 되어있던것은 일반 upx 패킹이었고,
upx는 간단하게, 정말 간단하게 언패킹이 가능하다.
upx 패킹의 특징은 가장 맨 아래에, Original Entry Point 로 갈수 있는 Jmp 문이 있어서, 바로 찾아갈수 있다.
사용 툴은 덤프를 뜨기 위한 Olly-dbg 와 IAT 복구를 위한, Lord-pe 이다.
가장 먼저
가장 먼저 올리디버거로 upx 로 패킹된 프로그램을 불러오자.
'이거 암호화나 패킹되어있어서 분석에 영향을 줄수 있는데 계속 할건가요?'
이런 경고문도 그냥 남자답게 예를 눌러주자
올리디버거가 경고한대로 왠지 이상하다. 평소에 보던 entry point 가 아닌데, 당연히 우린 upx 란걸 알고 있으니
가장 하단으로 내려가서부터 jmp을 찾는다.
보는것과 같이 JMP program, 01012475 가 바로 oep 로 점프시켜버리는 구문이다.
이제 과정은 60퍼센트 끝났다.
일단 01020DCB 주소에 Break-point 를 설정한다.
01020DCB에 break-point 를 걸어놓은 상태이다.
그리고 프로그램을 실행시킨후, BP에서 걸리면 F8 키로, 다음 부분으로 넘어간다.
지금 보는거과 같이 이것이 바로 OEP 지점이다.
01012475 가 바로 OEP 이다.
이제 언팩 과정이 끝났으니, 이대로 다시 덤프를 떠야 한다[저장 해야 한다].
Dump debugged process 를 눌러서
하단 체크박스 Rebuild Import 를 선택 해제 시키고, 따로 설정할것은 없으니, 바로 Dump 를 누른다.
덤프를 누르면 어느곳에 저장할지 나오는데, 그곳에 덤프를 저장한다.
이제 신나는 마음으로 프로그램을 실행시켜 본다.
그 순간 에러가 나를 반겨준다.
아마 upx 언팩을 하는 분들 모두 이 오류가 나올것이다.
이 오류가 나오는 이유는 덤프를 뜨고 나서 Import Address Table 가 손상되었기 때문이다.
그러므로 이제 다시 복구를 시켜 줘야 하는데.. 프로그래밍을 다시해야 되나..??
아니다.
이런 상황을 위해 나온 간단한 툴이 있다.
이번에 사용 할것은 LordPe 라는 프로그램이다.
나는 아직 초보자라서 pe를 복구 하는데만 사용한다.. :(
없는 분을 위해 다운로드 링크를 마련했다 :)
프로그램 실행후, Rebuild Pe를 누르고, 방금 덤프를 떳던 프로그램을 선택하고
IAT 를 복구 시킨다.
1초도 안되서 끝났고, 프로그램을 다른이름으로 저장되지 않고,
선택했던 프로그램을 그대로 복구 시킨다.
그래서 다른곳에서 찾을 필요는 없다.
실행결과 PE 오류는 나오지 않고, 프로그램은 잘 실행이 된다. ^^
이름모를 Crackme 풀이 키젠포함 (0) | 2012.11.24 |
---|---|
Duelist's Crackme 2 Keyfile (0) | 2012.11.21 |
Duelist's Crackme 1 Keygen (2) | 2012.11.21 |
Lafarge's Crackme v0.2 키젠 (1) | 2012.10.31 |
[리버싱] For 문 분석 (2) | 2012.08.14 |