-
-
[原创]把上一篇文章中发的hook框架完善了一下,添加了对四字节相对寻址的代码的hook支持
-
发表于: 2022-12-16 16:41 8937
-
- 项目地址为 https://github.com/smallzhong/KernelHook ,欢迎大家来star。
- 之前的代码只能处理用了相对寻址的jcc代码,没有处理其他
add、test
之类的用到相对寻址的代码。这次给完善了一下。 - 最后还是只能在模块里面找个空白地址来放代码来处理这种代码。。至于为什么不一开始就把所有的代码都放在模块的空白地址里面,非得跳来跳去的,只能说是一开始做的时候没规划好,太蠢了(((
- 思路如下:
- 假设原来的代码如下
- 将其改为如下代码
修改之后将disp中的偏移进行相应的调整即可。
- 假设原来的代码如下
- 在使用了四字节disp的代码中,有一种比较特殊的情况
带一个67前缀,可以用eip寻址。我感觉这种情况应该不会发生吧,不过还是给特判了一下,如果出现这种情况就返回失败。167
:
0005
00000000
add byte ptr ds:[eip],al
- 然后这次顺便处理了一下一些特殊的情况。
可以看到,在jcc前面加上一个REX prefix或者legacy prefix中除了f0之外的前缀,都是可以正常执行的。不过在intel白皮书中说到了部分是UB行为。虽然这种情况基本不可能出现,不过还是给特判了一下。如果遇到这种情况也能正常hook。123456789101112131415161718192021222324252626
70
00
jo
0xFFFFDC84A50A5823
2e
70
00
jo
0xFFFFDC84A50A5823
36
70
00
jo
0xFFFFDC84A50A5823
3e
70
00
jo
0xFFFFDC84A50A5823
40
70
00
jo
0xFFFFDC84A50A5823
41
70
00
jo
0xFFFFDC84A50A5823
42
70
00
jo
0xFFFFDC84A50A5823
43
70
00
jo
0xFFFFDC84A50A5823
44
70
00
jo
0xFFFFDC84A50A5823
45
70
00
jo
0xFFFFDC84A50A5823
46
70
00
jo
0xFFFFDC84A50A5823
47
70
00
jo
0xFFFFDC84A50A5823
48
70
00
jo
0xFFFFDC84A50A5823
49
70
00
jo
0xFFFFDC84A50A5823
4a
70
00
jo
0xFFFFDC84A50A5823
4b
70
00
jo
0xFFFFDC84A50A5823
4c
70
00
jo
0xFFFFDC84A50A5823
4d
70
00
jo
0xFFFFDC84A50A5823
4e
70
00
jo
0xFFFFDC84A50A5823
4f
70
00
jo
0xFFFFDC84A50A5823
64
70
00
jo
0xFFFFDC84A50A5823
65
70
00
jo
0xFFFFDC84A50A5823
66
70
00
jo
0xFFFFDC84A50A5823
67
70
00
jo
0xFFFFDC84A50A5823
f2
70
00
bnd jo
0xFFFFDC84A50A5823
f3
70
00
jo
0xFFFFDC84A50A5823
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 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
赞赏
他的文章
看原图
赞赏
雪币:
留言: