创建: 2014-02-26 16:31
更新: 2022-09-28 10:42
http://scz.617.cn:8/unix/201402261631.txt
给bluerust推销「DTrace on Windows」,他顺嘴说费了好一会儿才在gdb python里实现sxe等价功能。当时我也顺嘴问了一句,你是想sxe啥?他说原始需求是「模块一加载,在指定偏移下一个断点」。当时我想他怕是有啥高级需求要满足,才动用gdb python。单就这个需求,我一般catch commands写一段,比如
catch load some
commands $bpnum
tb *some+off
commands $bpnum
silent
set *(unsigned int*)($rcx+0x200)=$rax
c
end
c
end
gdb里有
catch load [regexp]
catch unload [regexp]
正好对应windbg
sxe ld:<module name>
sxe ud:<module name>
还有一个相关的
set stop-on-solib-events 1
gdb 7.4.1还不支持"catch load",至少7.6.1已经支持。
然后bluerust痛哭流涕、捶胸顿足
我日,还有catch load啊!!!我傻逼了!!!我折腾了半天,Gdb支持event new_objfile,但是svr4在map之前会emit new objfile event,我转而在_dl_setup_hash上下断点,刚好能拿到所有的信息……白费我看了半天代码!!!好,这个好啊!!!日,幸好说了一嘴。
人吧,太能干了也不好,你看bluerust,就是太能干了,以至于碰上这种需求了,二话不说操刀开干,硬撸一个实现。换我,先放狗,能偷懒就偷懒。另一方面,再次印证了交流讨论的意义所在,开局只是顺嘴一说的事,后续是意料之外的事。
原文始发于微信公众号(青衣十三楼飞花堂):GDB加载/卸载so时断下来
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论