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 -
'공부 > 콤퓨타' 카테고리의 다른 글
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 |