我想在CreateFileA后面增加一个MessageBoxA,但出错了
是不是因为:_lcreat之后会有一个返回值,MessageBoxA之后也有一个返回值,我jmp到原来的地址后,这两个返回值搞反了?所以出错了?
004618E2 |. 50 |push eax ; |String1
004618E3 |. FF15 F8514D00 |call dword ptr [<&KERNEL32.lstrcpyA>>; \lstrcpyA
004618E9 |. 8D85 BCFDFFFF |lea eax, dword ptr [ebp-244]
004618EF |. 50 |push eax ; /StringToAdd
004618F0 |. 8D85 C8FEFFFF |lea eax, dword ptr [ebp-138] ; |
004618F6 |. 50 |push eax ; |ConcatString
004618F7 |. FF15 5C534D00 |call dword ptr [<&KERNEL32.lstrcatA>>; \lstrcatA
004618FD |. 8D85 C8FEFFFF |lea eax, dword ptr [ebp-138]
00461903 |. 6A 00 |push 0 ; /Attribute = 0 (NORMAL)
00461905 |. 50 |push eax ; |FileName
00461906 |. FF15 60534D00 |call dword ptr [<&KERNEL32._lcreat>] ; \_lcreat
0046190C |. 50 |push eax
0046190D |. 8945 D8 |mov dword ptr [ebp-28], eax
00461910 >|. FFD6 |call esi ; \_lclose
我想在00461906后面增加一个MessageBoxA,在代码后面的空白处加入汇编代码:
004D42DB FF15 00544D00 call dword ptr [<&KERNEL32.CreateFile>; kernel32.CreateFileA
004D42E1 6A 00 push 0
004D42E3 6A 00 push 0
004D42E5 6A 00 push 0
004D42E7 6A 00 push 0
004D42E9 FF15 14564D00 call dword ptr [<&USER32.MessageBoxA>>; USER32.MessageBoxA
004D42EF ^ E9 18D6F8FF jmp 0046190C
然后用NOP填充00461906行,再把00461906行修改为jmp 004D42DB;
最后的代码修改为:
004618E2 |. 50 |push eax ; |String1
004618E3 |. FF15 F8514D00 |call dword ptr [<&KERNEL32.lstrcpyA>>; \lstrcpyA
004618E9 |. 8D85 BCFDFFFF |lea eax, dword ptr [ebp-244]
004618EF |. 50 |push eax ; /StringToAdd
004618F0 |. 8D85 C8FEFFFF |lea eax, dword ptr [ebp-138] ; |
004618F6 |. 50 |push eax ; |ConcatString
004618F7 |. FF15 5C534D00 |call dword ptr [<&KERNEL32.lstrcatA>>; \lstrcatA
004618FD |. 8D85 C8FEFFFF |lea eax, dword ptr [ebp-138]
00461903 |. 6A 00 |push 0 ; /Attribute = 0 (NORMAL)
00461905 |. 50 |push eax ; |FileName
00461906 E9 D0290700 jmp 004D42DB
0046190B 90 nop
0046190C |. 50 |push eax
0046190D |. 8945 D8 |mov dword ptr [ebp-28], eax
00461910 >|. FFD6 |call esi
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)