首页
社区
课程
招聘
[原创]把上一篇文章中发的hook框架完善了一下,添加了对四字节相对寻址的代码的hook支持
发表于: 2022-12-16 16:41 8937

[原创]把上一篇文章中发的hook框架完善了一下,添加了对四字节相对寻址的代码的hook支持

2022-12-16 16:41
8937
  • 项目地址为 https://github.com/smallzhong/KernelHook ,欢迎大家来star。
  • 之前的代码只能处理用了相对寻址的jcc代码,没有处理其他 add、test 之类的用到相对寻址的代码。这次给完善了一下。
  • 最后还是只能在模块里面找个空白地址来放代码来处理这种代码。。至于为什么不一开始就把所有的代码都放在模块的空白地址里面,非得跳来跳去的,只能说是一开始做的时候没规划好,太蠢了(((
  • 思路如下:
    • 假设原来的代码如下
      图片描述
    • 将其改为如下代码
      图片描述
      修改之后将disp中的偏移进行相应的调整即可。
  • 在使用了四字节disp的代码中,有一种比较特殊的情况
    1
    67:0005 00000000      add byte ptr ds:[eip],al
    带一个67前缀,可以用eip寻址。我感觉这种情况应该不会发生吧,不过还是给特判了一下,如果出现这种情况就返回失败。
  • 然后这次顺便处理了一下一些特殊的情况。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    26 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
    可以看到,在jcc前面加上一个REX prefix或者legacy prefix中除了f0之外的前缀,都是可以正常执行的。不过在intel白皮书中说到了部分是UB行为。虽然这种情况基本不可能出现,不过还是给特判了一下。如果遇到这种情况也能正常hook。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2022-12-16 16:43 被smallzhong_编辑 ,原因:
收藏
免费 3
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//