-
-
[原创]把上一篇文章中发的hook框架完善了一下,添加了对四字节相对寻址的代码的hook支持
-
发表于: 2022-12-16 16:41 9327
-
- 项目地址为 d8eK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6K6L8h3q4D9L8s2A6Z5L8$3&6Y4i4K6u0r3d9$3g2J5L8X3g2D9d9r3!0G2K9H3`.`. ,欢迎大家来star。
- 之前的代码只能处理用了相对寻址的jcc代码,没有处理其他
add、test之类的用到相对寻址的代码。这次给完善了一下。 - 最后还是只能在模块里面找个空白地址来放代码来处理这种代码。。至于为什么不一开始就把所有的代码都放在模块的空白地址里面,非得跳来跳去的,只能说是一开始做的时候没规划好,太蠢了(((
- 思路如下:
- 假设原来的代码如下

- 将其改为如下代码

修改之后将disp中的偏移进行相应的调整即可。
- 假设原来的代码如下
- 在使用了四字节disp的代码中,有一种比较特殊的情况
带一个67前缀,可以用eip寻址。我感觉这种情况应该不会发生吧,不过还是给特判了一下,如果出现这种情况就返回失败。167:000500000000add byte ptr ds:[eip],al - 然后这次顺便处理了一下一些特殊的情况。
可以看到,在jcc前面加上一个REX prefix或者legacy prefix中除了f0之外的前缀,都是可以正常执行的。不过在intel白皮书中说到了部分是UB行为。虽然这种情况基本不可能出现,不过还是给特判了一下。如果遇到这种情况也能正常hook。1234567891011121314151617181920212223242526267000jo0xFFFFDC84A50A58232e7000jo0xFFFFDC84A50A5823367000jo0xFFFFDC84A50A58233e7000jo0xFFFFDC84A50A5823407000jo0xFFFFDC84A50A5823417000jo0xFFFFDC84A50A5823427000jo0xFFFFDC84A50A5823437000jo0xFFFFDC84A50A5823447000jo0xFFFFDC84A50A5823457000jo0xFFFFDC84A50A5823467000jo0xFFFFDC84A50A5823477000jo0xFFFFDC84A50A5823487000jo0xFFFFDC84A50A5823497000jo0xFFFFDC84A50A58234a7000jo0xFFFFDC84A50A58234b7000jo0xFFFFDC84A50A58234c7000jo0xFFFFDC84A50A58234d7000jo0xFFFFDC84A50A58234e7000jo0xFFFFDC84A50A58234f7000jo0xFFFFDC84A50A5823647000jo0xFFFFDC84A50A5823657000jo0xFFFFDC84A50A5823667000jo0xFFFFDC84A50A5823677000jo0xFFFFDC84A50A5823f27000bnd jo0xFFFFDC84A50A5823f37000jo0xFFFFDC84A50A5823
[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!
最后于 2022-12-16 16:43
被smallzhong_编辑
,原因:
赞赏记录
参与人
雪币
留言
时间
mb_gczghstv
你的分享对大家帮助很大,非常感谢!
2024-8-26 11:42
calleng
为你点赞~
2023-11-28 00:38
pysafe
为你点赞~
2023-5-6 10:44
赞赏
他的文章
赞赏
雪币:
留言: