【教学】Windows编程课程之Crack-Me 第一课 练习题
本帖最后由 whypro 于 2010-9-23 13:51 编辑1.反汇编MessageBox的参数,获得不同的输出。
就是通过od修改MessageBox的参数,弹出不同的对话框
2.在winmain下利用文件操作API完成文件读写工作:
HANDLE CreateFile (
LPCTSTR lpName,
DWORD dwAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreate,
DWORD dwAttrsAndFlags,
HANDLE hTemplateFile)
BOOL ReadFile (
HANDLE hFile,
LPVOID lpBuffer,
DWORD nNumberOfBytesToRead,
LPDWORD lpNumberOfBytesRead,
LPOVERLAPPED lpOverlapped)
BOOL WriteFile (
HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped)
主要是让大家熟悉API是如何互相配合来完成一项工作的。
占位交作业了 占位交作业了 本帖最后由 Bker 于 2010-9-20 23:26 编辑
00401010 >|> \55 push ebp ;(initial cpu selection)
00401011|.8BEC mov ebp, esp
00401013|.83EC 40 sub esp, 40
00401016|.53 push ebx
00401017|.56 push esi
00401018|.57 push edi
00401019|.8D7D C0 lea edi, dword ptr
0040101C|.B9 10000000 mov ecx, 10
00401021|.B8 CCCCCCCC mov eax, CCCCCCCC
00401026|.F3:AB rep stos dword ptr es:
00401028|.8BF4 mov esi, esp
0040102A|.6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL
0040102C 68 1C204200 push 0042201C;和下一句调换的代码 ;hellomsg
00401031 68 34204200 push 00422034;和上一句调换的代码 ;hello, windows 98!
00401036|.6A 00 push 0 ; |hOwner = NULL
00401038|.FF15 ACA24200 call dword ptr [<&USER32.MessageBo>; \MessageBoxA
0040103E|.3BF4 cmp esi, esp
00401040|.E8 3B000000 call _chkesp
00401045|.33C0 xor eax, eax
00401047|.5F pop edi
00401048|.5E pop esi
00401049|.5B pop ebx
0040104A|.83C4 40 add esp, 40
0040104D|.3BEC cmp ebp, esp
0040104F|.E8 2C000000 call _chkesp
00401054|.8BE5 mov esp, ebp
00401056|.5D pop ebp
00401057\.C2 1000 retn 10
虽然输出的结果不同,但是没有达到题目的要求,就是简单的上下互换了代码。等待最佳答案! 交作业了,O(∩_∩)O~
在附件中!!! 第一次作业提交。。。。。。 0040102A|.6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL
0040102C 68 1C204200 push 0042201C;和下一句调换的代码 ;hellomsg
00401031 68 34204200 push 00422034;和上一句调换的代码 ;hello, windows 98!
00401036|.6A 00 push 0 ; |hOwner = NULL
00401038|.FF15 ACA24200 call dword ptr [<&USER32.MessageBo>; \MessageBoxA
应该所指的是 0040102A|.6A 00 push 0 这里吧
讲SDK的话 还是老罗那本比较详细 谢谢n大支持! 回复 7# Nisy
就是那两句互换,谢N大关注! 本帖最后由 whypro 于 2010-9-24 18:47 编辑
我先占个位置~~等一会交作业。。。。(用VS2010做)
先交第一部分作业
004113AE 8BF4 MOV ESI,ESP
004113B0 6A 00 PUSH 0
004113B2 68 44574100 PUSH WinMain.00415744
004113B7 68 3C574100 PUSH WinMain.0041573C
004113BC 6A 00 PUSH 0
004113BE FF15 38834100 CALL DWORD PTR DS:[<&USER32.MessageBoxW>>; USER32.MessageBoxW
004113C4 3BF4 CMP ESI,ESP
004113C6 E8 66FDFFFF CALL WinMain.00411131
004113CB 5F POP EDI
004113CC 5E POP ESI
修改:
004113A7 B8 CCCCCCCC MOV EAX,CCCCCCCC
004113AC F3:AB REP STOS DWORD PTR ES:
004113AE 8BF4 MOV ESI,ESP
004113B0 6A 32 PUSH 32 //改这个
004113B2 68 3C574100 PUSH WinMain.0041573C//交换下面和本身
004113B7 68 44574100 PUSH WinMain.00415744
004113BC 6A 00 PUSH 0
004113BE FF15 38834100 CALL DWORD PTR DS:[<&USER32.MessageBoxW>>; USER32.MessageBoxW
004113C4 3BF4 CMP ESI,ESP
004113C6 E8 66FDFFFF CALL WinMain.00411131
004113CB 5F POP EDI
004113CC 5E POP ESI
004113CD 5B POP EBX
004113CE 81C4 C0000000 ADD ESP,0C0
Q不知道,内容如何更换·~~嘿嘿·
A改地址里的内容
页:
[1]
2