whypro 发表于 2010-9-20 21:40:11

【教学】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是如何互相配合来完成一项工作的。

黑暗次序 发表于 2010-9-20 22:26:36

占位交作业了

zaas 发表于 2010-9-20 23:18:29

占位交作业了

Bker 发表于 2010-9-20 23:24:34

本帖最后由 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
虽然输出的结果不同,但是没有达到题目的要求,就是简单的上下互换了代码。等待最佳答案!

unpack 发表于 2010-9-20 23:37:56

交作业了,O(∩_∩)O~
在附件中!!!

ngm20 发表于 2010-9-21 07:57:50

第一次作业提交。。。。。。

Nisy 发表于 2010-9-21 18:03:06

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的话 还是老罗那本比较详细

whypro 发表于 2010-9-21 18:30:19

谢谢n大支持!

Bker 发表于 2010-9-22 09:56:31

回复 7# Nisy


    就是那两句互换,谢N大关注!

popo2008 发表于 2010-9-24 13:25:14

本帖最后由 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
查看完整版本: 【教学】Windows编程课程之Crack-Me 第一课 练习题