能力值:
( LV12,RANK:298 )
|
-
-
2 楼
反调试升级: 连附加自己两次,检测第一次是否成功且第二次是否失败
最后于 2022-10-10 19:23
被KuCha128编辑
,原因:
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
KuCha128
反调试升级:连附加自己两次,检测第一次是否成功且第二次是否失败 感谢指点,进程第一次attach自己返回成功,之后再attach自己,若再attach前已detach则本次attach返回成功,若未detach则返回失败。基于这个思路,并且尽可能的少改源码,我维护了两个全局变量,一个是上次traceme的进程task指针,一个是判断是否detach。原理: 未detach 连续ptraceme,若取得的task指针相同,说明连续attach自己,所以第一次ptraceme返回0,后面一直返回-1 若detach ptraceme后detach,则下次ptraceme后,还让其返回成功。
对于单进程traceme可以过反调试,但存在“A进程traceme,再B进程traceme,再A进程traceme,会绕过这种反反调试”所以更合适的办法是维护一个动态数组,保存{进程、调用traceme状态、调用detach状态},根据不同状态返回不同值。 但实现起来稍复杂,还没摸清内核的c语言能用哪些已经内置的数据机构,担心破坏系统稳定性,后面遇到可以再写。
最后于 2022-10-11 11:44
被xxxlion编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
再升级: 先附加自己,成功后检查 /proc/self/status 里的 TracerPid 是否为自己的 pid,如果不是则该结果为攻击者伪造的
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
残页
再升级:
先附加自己,成功后检查 /proc/self/status 里的 TracerPid 是否为自己的 pid,如果不是则该结果为攻击者伪造的
这个考虑到了,有方式过,我现在手头没试验环境,验证ok了的话 下篇帖子发。
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
残页
再升级:
先附加自己,成功后检查 /proc/self/status 里的 TracerPid 是否为自己的 pid,如果不是则该结果为攻击者伪造的
无论是用cat命令 还是用fopen打开文件 最后都会调用到open函数,可以在open.c中。过滤掉proc status字符串,发现打开文件直接return -1。 现在我担心的主要是 1:是否会有性能问题 2:无法打开这个文件,是否会破坏系统稳定性 等我验证后再下篇帖子详细说明
|
能力值:
( LV9,RANK:140 )
|
-
-
7 楼
TracePid的话网上有很多方法,那个双进程守护的话可以从ptrace入手,ptrace里面有个task结构体,里面有pid和ppid,遍历一下,如果ptrace的主体与目标存在父子关系就返回,这样的话没有父子关系的ida或其它进程可以随意附加,自身没法附加自身,正常apk基本都没问题,但是碰到那些专门针对这个的就有问题了,比如年初CTF里面的那个crackme,就专门针对traceme进行了处理,检测到无法traceme就直接退出进程
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
lxcoder
TracePid的话网上有很多方法,那个双进程守护的话可以从ptrace入手,ptrace里面有个task结构体,里面有pid和ppid,遍历一下,如果ptrace的主体与目标存在父子关系就返回,这样 ...
既然是要改内核源码,那肯定要做到一劳永逸的过检测。 1:设定启动时机,在一个进程启动早期,记录它所有fork的进 程pid,对这些pid 的ptrace行为,伪造出无论traceme和是守护进程都无法检测出的方案。 2:ptrace 黑名单或者白名单,我的下一篇文章给系统增加syscall,传给pid就是为此做铺垫的。只允许特定进程ptrace,其余进程一律直接返回失败,或者只不允许特定进程ptrace。 2:去掉ptrace内部的锁,允许多个进程附加到同一个进程上。这个我觉得可能比较有意思。如果ptrace附加只是为了读写内存 不调试的话,感觉没有问题。调试的话需要再看看怎么处理
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
感谢分享!
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
大佬,这是那个版本的内核代码?
|
能力值:
( LV3,RANK:20 )
|
-
-
11 楼
你瞒我瞒
大佬,这是那个版本的内核代码?
不好意思帖子没看到消息,linux 5.10, 其实这些源码各个版本不会变动太多的
|
能力值:
( LV9,RANK:230 )
|
-
-
12 楼
你可以尝试调试一下hunter,现在都是内存检测,并不是检测环境。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
珍惜Any
你可以尝试调试一下hunter,现在都是内存检测,并不是检测环境。
修改后frida可以附加hunter了
|
能力值:
( LV9,RANK:230 )
|
-
-
14 楼
会退出的才对,没提示高风险设备么?
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
xxxlion
不好意思帖子没看到消息,linux 5.10, 其实这些源码各个版本不会变动太多的
感谢感谢
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
cydian
修改后frida可以附加hunter了
大佬能不能把frida server分享一下
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
感谢分享
|
|
|