首页
社区
课程
招聘
[原创] 利用 HookZz 实现反调试与绕过的奇淫技巧
发表于: 2017-9-1 12:25 42518

[原创] 利用 HookZz 实现反调试与绕过的奇淫技巧

2017-9-1 12:25
42518

任何带特征的检测都是不安全的 & 隐而不发(Ouroboros)

Move to AntiDebugBypass on github

代码依赖于 HookZz, 一个 hook 框架

## 前言

对于应用安全甲方一般会在这三个方面做防御.

按逻辑分类的话应该应该分为这几类, 但如果从实现原理的话, 应该分为两类, 用API实现的不用API实现的(这说的不用 API 实现, 不是指换成 inine 函数就行) . 首先使用 API 实现基本统统沦陷. 直接通过指令实现的机制还有一丝存活的可能. 逻辑的话应该分为, 反调试, 反注入, 越狱检测, hook 检测.

本文所有相关仅仅针对 aarch64.

假设读者对下知识有了解

如何 hook 不定参数函数?

技巧在于伪造原栈的副本. 具体参考下文.

通常来说必备手册

通常来说必备源码

反调试从逻辑上分大概分为, 一种是直接屏蔽调试器挂载, 另一种就是根据特征手动检测调试器挂载. 当然也分为使用函数实现 和 直接使用内联 asm 实现.

ptrace 反调试可以使用四种方法实现.

1. 直接使用 ptrace 函数

这里使用的是 dlopen + dysym.

当然也可以基于 runtime 符号查找.

2. 使用 syscall 实现

3. 内联 svc + ptrace 实现

其实这种方法等同于直接使用 ptrace, 此时系统调用号是 SYS_ptrace

4. 内联 svc + syscall + ptrace 实现

其实这种方法等同于使用 syscall(SYS_ptrace, PT_DENY_ATTACH, 0, 0, 0), 这里需要注意, 此时的系统调用号是 0, 也就是 SYS_syscall

简单整理下系统调用流程, 只能以 xnu-3789.41.3 源码举例.

Supervisor Call causes a Supervisor Call exception. svc 切换 Exception LevelsEL0(Unprivileged)EL1(Privileged)

C06F60DB066D85C69DC318113539A69C.jpg

上面说的是指令层相关, 再说系统层相关, 使用 svc 进行系统中断调用需要明确 3 个点: 中断号, 系统调用号, 以及参数. 下面以 x86-64 举例.

中断向量表

中断处理函数

系统调用表

这里主要是调试器的检测手段, 很多检测到调试器后使用 exit(-1) 退出程序. 这里很容易让 cracker 断点到 exit 函数上. 其实有一个 trick 就是利用利用系统异常造成 crash. 比如: 覆盖/重写 __TEXT 内容(debugmode 模式下可以对 rx- 内存进行操作).

或者利用内联汇编实现退出, 并清除堆栈(防止暴力 svc patch with nop).

这里在检测时也可以通过 svc 实现.

上述的 svc 反调试手段, 可以通过 patch svc #0x80 with nop 轻松绕过. 所以需要校验 svc #0x80 是否被 patch, 一个想当然的方法是在正常的代码中使用 svc 进行 coding, 仔细想想并不合适.

所以另一个想法就是, 使用 svc 实现一个小功能, 之后检测 x0 返回值. 这里使用的是 getpid().

tips: longjmp 本来是用在异常时恢复状态, 这里由于未保存状态. 所以可以让攻击者不能对退出进行断点.

这里使用, 下面一小段内联汇编可以达到相同的目的.

整体的 svc 完整检测原型如下, 仅做抛砖引玉.

对于使用函数进行反调试可以使用 hook 轻松绕过, 具体的实现, 直接看代码.

因为 syscall 反调试有些特殊, 这里需要介绍下如何绕过 syscall 反调试, 使用的是 va_list 进行传递参数. http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055b/IHI0055B_aapcs64.pdf 参考阅读 va_list 相关.

借助 HookZz 有两种方法可以进行绕过

1. 使用 replace_call 绕过


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

收藏
免费 3
支持
分享
最新回复 (24)
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
2
只能双击666了,这个hookZZ不错。
2017-9-1 12:27
0
雪    币: 44
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
学习学习
最后于 2019-7-5 10:40 被shuicg编辑 ,原因:
2017-9-1 17:12
0
雪    币: 120
活跃值: (1708)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
cvcvxk 只能双击666了,这个hookZZ不错。
哈哈哈  欢迎大佬提各种疑问和建议. 
2017-9-2 18:54
0
雪    币: 3907
活跃值: (5822)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
5
翻译还是原创?
2017-9-2 20:09
0
雪    币: 120
活跃值: (1708)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
roysue 翻译还是原创?
原创的哇  之前微博那也是我的  ID,  发的时候编辑器有些问题,  排版不太好.
2017-9-4 11:00
0
雪    币: 184
活跃值: (96)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
mark
2017-9-5 14:56
0
雪    币: 206
活跃值: (108)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
mark
2017-9-6 17:41
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
srh
9
6666
2017-9-7 20:04
0
雪    币: 1194
活跃值: (3996)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
10
666666666666666
2017-9-7 20:40
0
雪    币: 3907
活跃值: (5822)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
11
jmpews 原创的哇 之前微博那也是我的 ID, 发的时候编辑器有些问题, 排版不太好.
优秀鼓励!
2017-9-8 10:01
0
雪    币: 465
活跃值: (398)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
太好了。
2017-9-12 14:55
0
雪    币: 6818
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
不错!!!!!!!!
2017-9-12 18:16
0
雪    币: 325
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
svc  #0x80  反调试绕过  这段相当不错,一个app能做到的最大的也就是这个了
2017-10-10 18:25
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
不错
2017-10-11 06:59
0
雪    币: 184
活跃值: (96)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
先马后看
2017-11-7 08:26
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
srh
17
666
2017-11-8 11:10
0
雪    币: 183
活跃值: (315)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
18
好东西,赞一个
2017-11-9 15:48
0
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
小本本记下
2018-1-22 10:09
0
雪    币: 120
活跃值: (1597)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
记录下,虽然看不懂!!!
2018-6-6 10:53
0
雪    币: 4697
活跃值: (2640)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
21
mark
2018-11-12 11:27
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
mark
最后于 2019-4-19 10:38 被mb_lxejazlg编辑 ,原因:
2019-4-18 12:00
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
jmpews大佬,请看一下短消息,谢谢!
2019-4-25 21:18
0
雪    币: 63
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
IxHook 如何修改函数返回值啊 大佬
2019-6-17 14:49
0
雪    币: 36
活跃值: (1061)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
25
mark
2019-11-25 13:38
0
游客
登录 | 注册 方可回帖
返回
//