能力值:
( LV2,RANK:10 )
|
-
-
101 楼
大佬,github:https://github.com/hanbinglengyue/FART这个里的源码是只能放到aosp6.0里吗?我把它放到aosp8.0里编译,需要改代码吗?
|
能力值:
( LV13,RANK:317 )
|
-
-
102 楼
学习学习学习
|
能力值:
( LV3,RANK:30 )
|
-
-
103 楼
大佬啊,moto nexus6 刷机之后,脱壳,有的app会崩溃,关键部分的dex没有dump下来,app是有什么对抗吗?
|
能力值:
( LV9,RANK:140 )
|
-
-
104 楼
咨询一下hanbing大佬,既然很多函数是在本身执行后才恢复的,Fart是在哪里实现主动调用函数,使函数真正走到解释执行的入口方法Excute()的呢?
|
能力值:
( LV3,RANK:30 )
|
-
-
105 楼
鹅厂某固样本,dex dump没有问题,但是method CodeItem dump不全。
|
能力值:
( LV2,RANK:10 )
|
-
-
106 楼
FuckCyber
看了楼主的思路,真的是非常巧妙,而且大佬给出的修复脚本确实是非常好。这篇帖子的亮点我觉得对于我来说最重要的就是亮点,一个是ART下的主动调用思路和设计,一个就是大佬的python修复脚本。首先大佬设计 ...
老铁求个修复脚本,小白写不了这么长的代码
|
能力值:
( LV1,RANK:0 )
|
-
-
107 楼
hanbingle
抱歉,修复合成dex的版本不会提供,你可以自行修改python修复脚本即可
群里有合成dex脚本不
|
能力值:
( LV2,RANK:10 )
|
-
-
108 楼
hanbingle
欢迎共同学习,共同进步 请问一下,frida的脚本frida_fart_hook.js跑的时候dumpcodeitem函数里的 var codeitemlength = funcGetCodeItemLength(ptr(codeitemstartaddr));这一行报错
================================= addrGetCodeItemLength-> 0x9191c561 funcGetCodeItemLength-> 0x9191c561 codeitemstartaddr-> 0x76a17ef6 Error: access violation accessing 0xd36b59e6 ============好像系统版本用错了,我那个dex是cdex格式的
最后于 2020-11-15 19:02
被黑色刺客编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
110 楼
大佬着实牛逼 膜拜一下 但修复的python脚本我这里跑不起来 我是py3 是版本原因吗
|
能力值:
( LV2,RANK:10 )
|
-
-
111 楼
万里星河
大佬着实牛逼 膜拜一下 但修复的python脚本我这里跑不起来 我是py3 是版本原因吗
看脚本里输出命令的特点,明显是python2的
|
能力值:
( LV2,RANK:10 )
|
-
-
112 楼
尝试了一下,真心不错,学习了。专业!
|
能力值:
( LV2,RANK:10 )
|
-
-
113 楼
为什么不能自动保存
|
能力值:
( LV2,RANK:10 )
|
-
-
114 楼
dddd
最后于 2021-10-14 19:42
被huaerxiela编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
115 楼
WindStormy
![](upload/attach/202004/849838_Z8DBKSQE294CMEE.png)
### 咨询一下hanbing大佬,既然很多函数是在本身执行后才恢复的,Fart是在哪 ... 小菜花看了文章之后冒昧替大佬回答下【Fart实现主动调用函数逻辑的大致流程】,如下: 作者是在壳完成执行权的交付之后,选取了一个合适的点通过反射也好,参数间接获取也罢拿到了应用最终的classloader,然后从classloader->pathList->遍历dexElements->DexFile->mCookie, 通过mCookie调用DexFile的一个static方法,好像是getClassNameList,拿到所有类名,然后再去loadClass,通过反射拿到类的所有方法,,然后去根据ArtMethod去构造自己的fartInvoke,加上参数标识,然后当调用到ArtMethod的invoke的时候如果发现是fart的标识,就开始根据artmethod对象的指针获取codeitemoffset,然后根据dex-codeitem文件格式,计算tryitems存在与否的不同情况的codeitem长度,最终完成函数粒度的指令dump
可能有理解不当之处,仅供参考。。。
最后于 2021-10-14 19:49
被huaerxiela编辑
,原因:
|
能力值:
( LV1,RANK:0 )
|
-
-
116 楼
huaerxiela
WindStormy
![](upload/attach/202004/849838_Z8DBKSQE294CMEE.png)
### 咨 ...
刚看完,确实是你这个思路。可能他的意思是函数抽取恢复的过程是怎么和 fart 执行 artmethod->invoke 方法关联起来的,是在执行 artmethod->invoke 的时候壳会自己恢复函数吗?
|
能力值:
( LV3,RANK:25 )
|
-
-
117 楼
黑色刺客
hanbingle
欢迎共同学习,共同进步 请问一下,frida的脚本frida_fart_hook.js跑的时候dumpcodeitem函数里的var& ...
cdex实际上是AOT生成的base.vdex,删除/data/app/pkgname/oat文件夹,再dump即可。(也可禁用AOT、强制解释执行,方法很多)
|
能力值:
( LV2,RANK:10 )
|
-
-
118 楼
blue_sky
刚看完,确实是你这个思路。可能他的意思是函数抽取恢复的过程是怎么和 fart 执行 artmethod->invoke 方法关联起来的,是在执行 artmethod->invoke 的时候 ...
我也有这个疑问 调用这个方法后在里面第一行就判断从而结束调用 并没有走到解释器啥的里面 难道仅仅是调用一下artMethod::invoke函数就能触发壳解密codeItem吗
|
能力值:
( LV2,RANK:10 )
|
-
-
119 楼
万里星河
我也有这个疑问 调用这个方法后在里面第一行就判断从而结束调用 并没有走到解释器啥的里面 难道仅仅是调用一下artMethod::invoke函数就能触发壳解密codeItem吗
那不一定啊 壳子codeitem恢复的时机 和 你主动构造函数调用链的深度 ,两者结合在一起看,才确定了你是否可以脱壳成功 比如说,如果codetiem恢复的时机是在loadClass的loadmethod中,那么你artMethod::invoke之前都已经进行类的loadClass了,此时loadmethod已经执行,你artMethod::invoke的时候那自然也就恢复了了,此时你就可以dump codeitem 再比如说,如果codetiem真正的解密时机是在指令真实执行的时候,那目前开源的fart中artMethod::invoke后直接就进行dump,那此时就是不行的,然后论坛中就出现了以youpk为代表的构造了更深的调用链就是来解决这这种问题的。。。。。 所以综上所述,一般情况下,当然是调用链越深越降维打击越有更多可能。
|
能力值:
( LV2,RANK:10 )
|
-
-
120 楼
blue_sky
刚看完,确实是你这个思路。可能他的意思是函数抽取恢复的过程是怎么和 fart 执行 artmethod->invoke 方法关联起来的,是在执行 artmethod->invoke 的时候 ...
见199楼回复
|
能力值:
( LV1,RANK:0 )
|
-
-
121 楼
啥时候出新版本呀,弄个2022年新版本呀?
|
能力值:
( LV1,RANK:0 )
|
-
-
122 楼
感谢大佬分享资源
|
能力值:
( LV1,RANK:0 )
|
-
-
123 楼
太强了
|
能力值:
( LV1,RANK:0 )
|
-
-
124 楼
+1
|
能力值:
( LV1,RANK:0 )
|
-
-
125 楼
//step 4: 创建Application对象;在makeApplication函数中调用了newApplication,在该函数中又调用了app.attach(context),在attach函数中调用了Application.attachBaseContext函数
Application app = data.info.makeApplication(data.restrictedBackupMode, null);
mInitialApplication = app;
|
|
|