首页
社区
课程
招聘
[己解决]我想在_lcreat后面增加一个MessageBoxA
发表于: 2008-3-12 09:24 3561

[己解决]我想在_lcreat后面增加一个MessageBoxA

2008-3-12 09:24
3561
我想在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期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 50161
活跃值: (20620)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
00461906  |.  FF15 60534D00 |call    dword ptr [<&KERNEL32._lcreat>] ;

这句你换成了:
004D42DB      FF15 00544D00 call    dword ptr [<&KERNEL32.CreateFile>;  kernel32.CreateFileA

不同的函数,显然是不能随意更换的。
2008-3-12 09:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
因为下面的lclose需要 lcreate返回的句并
2008-3-12 09:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
To kanxue:
嗯,确实是这样,但修改后还是出错
2008-3-12 09:47
0
雪    币: 50161
活跃值: (20620)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
5
另外,在调用MessageBoxA时保存EAX的值,如:
push eax
...
...
call MessageBoxA
pop eax
2008-3-12 09:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
行了,谢谢老大
2008-3-12 10:00
0
游客
登录 | 注册 方可回帖
返回
//