본문 바로가기

공부/콤퓨타

abex 1st crackme

728x90
반응형

abex 1st crackme

 

MessageBox function?

(https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx)

 

int WINAPI MessageBox(
  _In_opt_ HWND    hWnd,
  _In_opt_ LPCTSTR lpText,
  _In_opt_ LPCTSTR lpCaption,
  _In_     UINT    uType
);

 

 

GetDriveType function?

(https://msdn.microsoft.com/en-us/library/windows/desktop/aa364939(v=vs.85).aspx)

 

UINT WINAPI GetDriveType(
  _In_opt_ LPCTSTR lpRootPathName
);

 

 

 Return value

 

 

 

INC ESI (ESI 1증가, FFFFFFFF -> 00000000)
DEC EAX (EAX 1감소, 00000003 -> 00000002)
JMP SHORT ~ (주소값 이동)
INC ESI (ESI 1증가, 00000000 -> 00000001)
INC ESI (ESI 1증가, 00000001 -> 00000002)
DEC EAX (EAX 1감소, 00000002 -> 00000001)
CMP EAX,ESI (두개 비교 -> Z플래그 0, 같지않기 때문에)
JE SHORT (JE 조건 점프 명령어, ZF=1 이면 점프)

 


생각해보면 이 문제는 크게 3가지 유형(레지스터, 플래그, 코드패치)으로 나뉘는거 같다

생각나는대로 적어보면

 

Z플래그 값 변경: Z1 -> Z0
CMP 비교값 변경: EAX = ESI
JMP 주소값 변경: 00401021 -> 0040103D
JE 조건문 변경: JE -> JMP

EAX 초기값 변경: 00000003 -> 00000004

 

 

 

- abex 1st crackme -

 

 

728x90
반응형

'공부 > 콤퓨타' 카테고리의 다른 글

malware(fping.exe)  (0) 2015.10.28
악성 도메인 구별법  (0) 2015.10.28
IDA + OllyDbg  (0) 2015.10.27
Cheat Engine  (0) 2015.10.27
abex 3rd crackme  (0) 2015.10.26