能力值:
( LV2,RANK:10 )
2 楼
补充下都是具有读权限的
能力值:
( LV2,RANK:10 )
3 楼
想完全阻止也是不可能的吧,只能尽可能增加复杂度而已。我觉得光靠反ptrace防止dump内存还不行,还要研究一下怎么让它dump出来的东西也没法分析~
能力值:
( LV2,RANK:10 )
4 楼
再补充一点,/proc/xx/task里面的线程应该是附属于当前进程的吧,我觉得ptrace的话应该不会出现权限问题啊~
能力值:
( LV2,RANK:10 )
5 楼
目前测试的结果却是是inotify检测没有被触发,我尝试在so中进行检测的进程获取执行su获取root权限,或者在应用中获取su权限,也还是如此。可能inotify只能检测通过文件系统进行的操作,而通过内核直接修改的文件无法得到触发吧。
不管如何,想要dump,首先的ptrace附着到目标的进程上,无论是阻止ptrace还是在动态检测,一旦被ptrace上立刻终止应用,都能比较简单的阻止动态调试,这个的对象是第三方应用,如果过于复杂,会造成系统负担以及稳定性和被第三方检测为木马程序的风险。
能力值:
( LV2,RANK:10 )
6 楼
inotify还没有研究~不过我觉得在so中直接调用ptrace TRACEME将主进程置于调试状态对复杂应用来说是有点问题的,因为处于被调试状态的进程只要接受到除SIGKILL之外的信号都会暂停执行,交给调试它的父进程处理,还是双进程或者多进程处理ptrace靠谱~
你尝试把遍历/proc/xx/task,把所有线程也都ptrace了么?
能力值:
( LV2,RANK:10 )
7 楼
不行,我已经尝试了遍历所有task,创建单独的进程,分别ptrace到group下每个进程,权限不够,无论是在app还是so中进行sysyem("su");都是提示权限不足。
目前唯一可行的做法就是,遍历group下每个进程,读取status文件,判断tracePid值,大于0说明被调试,但是这样做,只能起一个进程,固定时间间隔扫描,对系统有一定的负担,目前学习可以这样来,作为产品是不行的。
能力值:
( LV2,RANK:10 )
8 楼
刚有测试了下inotify检测proc/pid/status的状态变化,确认是和权限无关,在adb手动cat时会被触发,但是代码中使用ptrace(PTRACE_TRACEME,0 ,0 ,0);后status的变化不会被触发,读取status确认tracePid值确实是发生了变化。
唯一的确别就是一个是通过文件系统,一个是底层kernel直接维护,inotify这条路基本上行不通了。
最新的android4.4如果打开selinux的话,ptrace是无法连接上的,目前我们自己做的项目android4.4是没打开selinux的,而且破解者也可以通过修改selinux的配置,将最大连接数改为0,使之失效。
能力值:
( LV2,RANK:10 )
9 楼
我搞的貌似还没有楼主厉害,自己试了试主进程直接traceme,结果简单应用可以正常运行,但是复杂点的就不行了;还试了双进程,但是我子进程怎么也不能attach父进程,不知道别人怎么做成的,现在也没搞明白~
能力值:
( LV2,RANK:10 )
10 楼
在安卓平台上,注入和dump这种根本都是防不了的,甚至你的软件正在运行的系统都是不值得信任的,破解者完全可以自己改一个系统。
能力值:
( LV2,RANK:10 )
11 楼
如果不能ptrace的话,怎么附着到我的进程上,如何进一步dump。
当然如果系统都有问题,什么都是白搭,想要什么数据都可以导出。
目前所考虑的就是增加破解成本,本来就不是非常有价值的产品,只要成本大于价值,那么就安全了。
能力值:
( LV2,RANK:10 )
12 楼
好东西,受益匪浅
能力值:
( LV2,RANK:10 )
13 楼
我遇到一个是应用自己调用类似gdbserver附加自己,如果denied,说明已经被调试
能力值:
( LV3,RANK:20 )
14 楼
TracerPid 不为0的监测早被破了
某加密新版动态脱壳 http://bbs.pediy.com/showthread.php?t=190384
能力值:
( LV2,RANK:10 )
15 楼
这篇文章进行操作的前提也是你attach到进程之上进行修改,一般的反调试是attach到当前进程直接断掉。
能力值:
( LV2,RANK:10 )
16 楼
非常赞同。 自己编译个系统去做逆向非常正常。
能力值:
( LV2,RANK:10 )
17 楼
android 5.0的selinux加强了安全限制,完全阻止了。
能力值:
( LV2,RANK:10 )
18 楼
开启线程查询Ptrace id需要一定的资源
有没有试过检测 gDvm.debuggerConnected这个结构来实现呢
或者有新的方法
能力值:
( LV2,RANK:10 )
19 楼
这是开源系统,任何阻止ptrace的措施都是无效的,白忙
能力值:
( LV3,RANK:30 )
20 楼
The reason you could not attach your parent process is that your pp is not dumpable. So processes that are not dumpable can not be attached via ptrace PTRACE_ATTACH.
The solution is to set your parent process be dumpable. And how to do it, I think you could google that!
能力值:
( LV2,RANK:10 )
21 楼
这个我已经搞明白了,thankyou~
能力值:
( LV2,RANK:10 )
22 楼
你好,请问允许子进程ptrace attach父进程是通过在主进程里调用prctl(PR_SET_DUMPABLE,1,0,0,0)吗?
能力值:
( LV2,RANK:15 )
23 楼
你好, 我也想知道怎么解决的,能共享一下吗?
能力值:
( LV8,RANK:130 )
24 楼
谢谢分享思路
能力值:
( LV8,RANK:130 )
25 楼
那篇文章的大神写的是对的呢,他用的启动附加呢,人家的反attach写在so里面呢,启动附加的方式,人家的so都木有运行起来,你可以用ida想怎么附加就怎么附加,,这是一种思路,免去了直接hook fgets函数,寻找安全点的反调试办法