USER32.MessageBoxA 함수 호출.(USER32 dll에서 함수 호출)
https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-messagebox
int MessageBox(
HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
);
사진에서 첫번째 PUSH의 0은 마지막 변수, 두번째 PUSH의 0은 맨 첫번째 변수. 좌측 하단에서 push 한 값들 스택으로 확인할 수 있음.
F8로 한줄씩 실행, call 들어가서 프로그램이 실행 된 모습.
KERNEL32.GetDriveTypeA
https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-getdrivetypea
UINT GetDriveTypeA(
LPCSTR lpRootPathName
);
return value 확인해보면
HDD는 3을 리턴, CDROM은 5로 리턴.
CMP문 확인. eax, esi 값 비교하는 것을 알 수 있음.
F8로 CMP문까지 이동한다.
//F2 는 브레이크 포인트 설정
1. 진입 조건문 JNE로 변경하기
오른쪽클릭→바이너리→edit
어셈블리 레퍼런스에 JNE 는 75.
위와 같이 수정.
F9로 실행 확인.
2. EAX값을 ESI 값과 동일하게 바꾸기
더블클릭하여 CMP문에 들어가기 직전 EAX값을 ESI 값과 동일하게 바꿔줌.
F9로 실행하면 위와 같이 성공한다.
'Write-Up > Reversing' 카테고리의 다른 글
[disass] structure.c (0) | 2019.10.02 |
---|---|
disassembly 실습_190925 (0) | 2019.09.25 |
Abexcm3.exe (0) | 2019.03.23 |