Concept |
Windows MFC Reversing
sub_401000이 WinMain이고 , sub_401110이 WndProc임을 알 수 있다. (노란 형광펜 부분 딱 들어가면 된다.)
일반적으로 WndProc은 두번째 인자를 메시지 번호로 받고,
그 메시지 번호에 따라서 분기한 후, 메시지 번호에 맞는 함수를 호출하거나
WndProc이 호출하는 함수목록과 비교하여 일치하는 경우 해당 함수로 이동할 수 있도록 되어있다.
문제를 풀면서 느낀점
아이다의 수도코드로 어느정도 분석이 끝나고 나면,
패치나 상세 어셈블리 분석은 olly를 같이 키고 주소 비교해가면서 하는게 빠른것 같다. 올리가 특정 주소의 메모리 보기에 더 편한 듯.
|
Hands-on Practice |
pick_me 라는 게임은3x3개의 칸 중에, 랜덤으로 움직이는 이모티콘
정확히 클릭한 횟수만큼 점수가 올라가는 게임이다. 빈 칸을 누를경우 점수가 0으로 돌아온다.
WndProc(sub_401110)에서 분기문에 모두 브레이크 포인트를 걸고, 이벤트를 발생시키면서 동적 분석을 하다보니
이모티콘을 클릭하여 점수를 발생시키는 메시지 번호가 0x111이라는 것을 알게 되었고,
아래의 dword_~~ (지역변수)인 count가 해당 점수를 저장하는 변수라는 것을 알게 되었다.
(그림 1)
(그림 1)의 line 38부분에서 어셈 코드를 보고, cmp 부분에서 esi 레지스터를 300으로 조작하여
sub_4014A0( )으로 들어가 보았다.
( 그림 2 )
해당 함수가 실행되면 아래와 같이 키가 출력된다.
( 그림 3)
KEY : 13ar0n_Nach0r
|
Reference |
NONE |
'OLD 2018 ~ 2021 > BASIC → Hacking' 카테고리의 다른 글
180127_REVERSING(5)_key (0) | 2018.01.28 |
---|---|
180121_REVERSING(4)_winme (0) | 2018.01.23 |
180118_[REVERSING]_닷지게임_안죽게_패치하기 (0) | 2018.01.19 |
170119_REVERSING(3)_snake (0) | 2018.01.18 |
170111_REVERSING(1)_whereami (0) | 2018.01.14 |
댓글