首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
付费问答
发新帖
1
0
[旧帖]
[分享]ollydbg的BUG之二
0.00雪花
发表于: 2011-1-17 11:07
1923
[旧帖]
[分享]ollydbg的BUG之二
0.00雪花
幻影火
2011-1-17 11:07
1923
最近又发现ollydbg在winproc的bug,
当利用OD开启dll的时候(为什么是dll? 小弟目前只有侦测到dll有winproc)
然后直接执行,案ollydbg上方的W按钮,也就是大家很少用到的消息窗口
如果完全没有补过bug的OD的话,可能按了W就挂点了 (悲剧阿!!)
不过幸好小弟有一版是按了不会当机了
不过按了之后,winproc有些会变成FFFFXXXX (再次悲剧!!)
小弟只好来跟踪了
然后藉由跟踪,发现
/*497AA8*/ push ebx
/*497AA9*/ call <jmp.&USER32.GetParent>
/*497AAE*/ mov [local.147], eax
/*497AB4*/ push ebx
/*497AB5*/ call 004977E0
/*497ABA*/ pop ecx
/*497ABB*/ mov [local.146], eax
/*497AC1*/ mov [local.145], esi
/*497AC7*/ push -14
/*497AC9*/ push ebx
/*497ACA*/ call <jmp.&USER32.GetWindowLongA>
/*497ACF*/ mov [local.144], eax
/*497AD5*/ push -10
/*497AD7*/ push ebx
/*497AD8*/ call <jmp.&USER32.GetWindowLongA>
/*497ADD*/ mov [local.143], eax
/*497AE3*/ push -0C
/*497AE5*/ push ebx
/*497AE6*/ call <jmp.&USER32.GetWindowLongA>
/*497AEB*/ mov [local.142], eax
/*497AF1*/ lea eax, [local.136]
/*497AF7*/ push 100
/*497AFC*/ push eax
/*497AFD*/ push ebx
/*497AFE*/ call <jmp.&USER32.GetWindowTextA>
/*497B03*/ mov byte ptr ss:[ebp-121], 0
/*497B0A*/ push 100
/*497B0F*/ lea edx, [local.72]
/*497B15*/ push edx
/*497B16*/ push ebx
/*497B17*/ call <jmp.&USER32.GetClassNameA>
/*497B1C*/ mov byte ptr ss:[ebp-21], 0
/*497B20*/ push -18
/*497B22*/ push ebx
/*497B23*/ call <jmp.&USER32.GetClassLongA>
又臭又长的代码阿
不过我还是有耐心的一个个去追踪
最后我发现在这里
/*497AB4*/ push ebx
/*497AB5*/ call 004977E0
这个call里面已修改到winproc
于是跟进去
我发现这个
/*4977F0*/ push -4
/*4977F2*/ push ebx
/*4977F3*/ call <jmp.&USER32.GetWindowLongA>
有调用到winproc
不过修改她似乎已没有用,他的返回值都是0,于是我就只好再继续跟踪下去
/*49781C*/ push 0
/*49781E*/ mov edx, dword ptr ds:[4F55C4]
/*497824*/ push edx
/*497825*/ push ebx
/*497826*/ push 4
/*497828*/ lea ecx, [local.1]
/*49782B*/ push ecx
/*49782C*/ push 004961C9
/*497831*/ mov eax, dword ptr ds:[4D5A74]
/*497836*/ push eax
/*497837*/ call _Injectcode
在这段代码执行过之后,发现winproc的值出现在[local.1] 这个里面
所以我就打算跟进去看看
结果跟进去之后,发现是跑到非程序领空去了
后来我就想到另一个方法,利用打补钉的方法去补起来,于是我就修改了
/*497837*/ call _Injectcode 这个代码 (长度刚好跟jmp相符
)
于是我写了这么一段代码
/*57C02E*/ mov dword ptr ds:[57CFFC], ebx //保存函式的arg5
/*57C034*/ mov dword ptr ds:[57CFF8], ecx //保存函式的arg3
/*57C03A*/ call _Injectcode
/*57C03F*/ mov ecx, dword ptr ds:[57CFF8]
/*57C045*/ cmp byte ptr ds:[ecx+3], 80
/*57C049*/ js short 0057C077
/*57C04B*/ add esp, 1C
/*57C04E*/ push 0
/*57C050*/ mov edx, dword ptr ds:[<&USER32.GetWindowLongW>]
/*57C056*/ push edx
/*57C057*/ mov ebx, dword ptr ds:[57CFFC]
/*57C05D*/ push ebx
/*57C05E*/ push 4
/*57C060*/ mov ecx, dword ptr ds:[57CFF8]
/*57C066*/ push ecx
/*57C067*/ push 004961C9
/*57C06C*/ mov eax, dword ptr ds:[4D5A74]
/*57C071*/ push eax
/*57C072*/ call _Injectcode
/*57C077*/ jmp 0049783C
其实跟原本的代码类似,只不过为一个改变就是
/*57C050*/ mov edx, dword ptr ds:[<&USER32.GetWindowLongW>]
他从GetWindowLongA变成GetWindowLongW
测试之后过了
希望这段文章对于补ollydbg的漏洞有用
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
收藏
・
1
免费
・
0
支持
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
5
)
LuckyFox
雪 币:
1
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
3
回帖
74
粉丝
0
关注
私信
LuckyFox
2
楼
我的OD还用不熟悉,
2011-1-17 11:48
0
ainicanfly
雪 币:
93
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
2
回帖
29
粉丝
0
关注
私信
ainicanfly
3
楼
努力学习。。。
2011-1-17 13:23
0
JunkyWH
雪 币:
14
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
0
回帖
5
粉丝
0
关注
私信
JunkyWH
4
楼
可怜的哇啊,加油吧
2011-1-17 13:33
0
Kisesy
雪 币:
6528
活跃值:
(3444)
能力值:
( LV3,RANK:30 )
在线值:
发帖
3
回帖
601
粉丝
2
关注
私信
Kisesy
5
楼
长见识了
2011-3-15 17:19
0
jaga
雪 币:
30
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
0
回帖
1
粉丝
0
关注
私信
jaga
6
楼
能不能给个己经打好补丁的?
2011-3-28 18:09
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
幻影火
6
发帖
368
回帖
10
RANK
关注
私信
他的文章
[原创]檔案脫殼後的優化
4987
[原创]DYAMAR Protector 主程式的脫殼(單純研究)
13039
[讨论]一個少見的殼
4673
[分享]ollydbg的BUG之二
1924
[分享]ollydbg的BUG
1236
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部