블로그 이미지
ludwings

카테고리

분류 전체보기 (130)
WIN API (22)
워게임 (61)
만든것 (2)
메모 (37)
Total18,086
Today0
Yesterday3

잘 모르겠으니까 차근차근 내용 저장

 

ReadMe.txt

"

Reversing.Kr

It should be modified to work properly.

By rianatzz
"

이런 내용을 보니 파일을 수정해야 될 것 같습니다..

 

우선 그냥 실행하면 exe corrupted 라는 메세지가 뜨고 확인누르면 그냥 종료 됩니다.

 

 

exe corrupted를 발생시키는 곳을 찾아보니

 

0x00423f11 의 함수인데 이 함수의 return 값이 0 이여야 정상 실행될 듯 합니다.

 

 

00423f11 함수 실행후 eax를 0으로 수정하고 실행시키니

 

"Could not extract script from EXE." 라는 메세지를 출력하며 종료됩니다.

 

 

먼저, exe corrupted를 발생시키는 함수부터 살펴보겠습니다.

 

GetModuleFileNameA로 파일경로를 얻어 fopen 하고,

파일안에있는 값들을 스택에 저장 해두는 것을 확인할수 있습니다.

( [EAX+466514], [EAX+46650C] )

{

stack

00861A90  |BE4B48A3
00861A94  |A94A6C98
00861A98  |0A534C99
00861A9C  |7D48D686

}

 

중간에 쓸데없는 내용은 생략하고

 

파일 포인터를 맨뒤 -8로 이동시킨후에 4byte 읽어오고 저장합니다.[ESI+4]

 

또 4BYTE 읽어오고 저장합니다. [EBP-10]

 

 

그리고 파일 맨앞부터 1BYTE 씩 읽어오면서 0x00450F95를 수행합니다.

 

파일끝까지 작업이 끝난후 XOR EAX, AAAAAAAA 을하여 맨마지막에 4BYTE 읽어온 값과 같은지 비교해봅니다.

 

-----

9/16 해결


드디어 이답답한 샘기를 해결했습니다.

중요한것은 exe corrupt라는걸 판별하는 함수 안에서 읽어온 첫번째 값의 offset으로 이동하여 0x10개의 값을 읽어온 뒤, 미리 스택에 저장해두었던 값이랑 비교해주는 것인데요 ( 0x10개임)

 

 ahk2를 헥스 에디터로 열어서 스택에 저장해두었던 값으로 검색해서 그 offset을 알아내, 파일의 맨 뒷단의 값을 그 옵셋으로 바꾼후,  실행해주면 됩니다. 물론 마지막 xor aaaaaa어쩌고 한건 스킵해줘야겟죠..


그렇게하면 해결~~!

'워게임 > 리버스엔지니어링' 카테고리의 다른 글

reversing.kr windows kernel  (3) 2013.09.20
'SuNiNaTaS' 리버싱 문제  (2) 2013.09.17
Reversing.kr AutoHotKey2 해결!!  (0) 2013.09.02
코드엔진 5  (2) 2013.05.08
코드엔진 4  (0) 2013.05.07
코드엔진 3번  (0) 2013.05.06
Posted by ludwings

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함