首页
社区
课程
招聘
[旧帖] [求助]用ollydbg如何在exe里增加汇编代码 0.00雪花
发表于: 2016-4-21 11:06 3742

[旧帖] [求助]用ollydbg如何在exe里增加汇编代码 0.00雪花

2016-4-21 11:06
3742
我是刚入门,用ollydbg打开了一个exe 文件,想在里面增加几行汇编代码,不知如何操作,请前辈指教。先行致谢

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
更改,然后另存
2016-4-21 12:51
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
从基本的学习吧
http://bbs.pediy.com/showthread.php?t=184679&highlight=od
2016-4-21 12:54
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
偶已搞定了,不能在原反汇编里增加,否则地址都变了,里面的跳转会出错。所以ollydbg不提供在汇编里增加的功能。可以改,或删除后用nop充实。但不能增加。
2016-4-21 15:22
0
雪    币: 200
活跃值: (4671)
能力值: ( LV9,RANK:240 )
在线值:
发帖
回帖
粉丝
5
你可以先找到一段都是nop的代码,在你想加代码的地方改一句跳转跳到nop处改你想加的代码,然后再跳回去。如果你改的那句跳转的代码的原代码还要用就在nop处先写上那个代码。
2016-4-21 16:04
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
找一片空白的空间,写你的汇编代码,可以跳转到这段代码执行,然后再跳转回去,注意不要破坏原来的寄存器的环境,用pushad和popad指令
2016-4-22 13:57
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
原代码:
0037143E    push eax                     kernel32.BaseThreadInitThunk
0037143F    push offset 数组.??_C@_02DPKJAMEF@?$CFd?$A>; ASCII "%d"
00371444    call dword ptr ds:[<&MSVCR120D.scanf_s>] ; msvcr120.scanf_s
0037144A    add esp,0x8               跳转到添加的代码
0037144D    cmp esi,esp            
0037144F    call 数组.0037114A

修改后:
00B0143E     push eax                                 ; kernel32.BaseThreadInitThunk
00B0143F     push offset 数组_-_???_C@_02DPKJAMEF@?$CFd>; ASCII "%d"
00B01444    call dword ptr ds:[<&MSVCR120D.scanf_s>] ; msvcr120.scanf_s
00B0144A     jmp 数组_-_?00B04DBD   修改之后,变成了一行代码,跳转到添加的代码段      
00B0144F    call 数组_-_?00B0114A

添加的代码段:
00B04DBB    add byte ptr ds:[eax],al
00B04DBD    add esp,0x8                              ; 保存前五个字节
00B04DC0    cmp esi,esp
00B04DC2    push 0x0                                 ; MessagBox函数
00B04DC4    push 0x0
00B04DC6    push 0x0
00B04DC8    push 0x0
00B04DCA    all user32.MessageBoxW
00B04DCF     jmp 数组_-_?00B0144F           ; 跳转回之前的代码下一行
00B04DD4    nop
00B04DD5    add byte ptr ds:[eax],al


原程序需要导入了MessageBox函数,才能运行成功。找个有MessageBox弹窗的程序实验一下,应该没错
2016-4-22 14:29
0
游客
登录 | 注册 方可回帖
返回