首页
社区
课程
招聘
[原创]某抽取壳的原理简析
发表于: 2020-5-11 20:16 12880

[原创]某抽取壳的原理简析

2020-5-11 20:16
12880

  jdax分析看看结构~ 发现是某加壳后的文件结构 

 

 从最早加载入口分析开始:

 都是 native函数 并且都是动态注册的 frida hook RegisterNatives 找到绑定的函数 继续分析:

由于该函数分析难度较大,我们下面直接通过系统源码层面进行脱壳原理分析 当然想要Dump DEX先把 反调试过掉


 信号反调试, frida 反调试 jdb附加反调试等等 我们这里主要是把frida反调试过掉 让frida可以正常dump下DEX文件


 这个把注册函数设置为0 让其注册失败就可以过掉 其他反调试类似~  那下面直接用frida实现 过一下反调试吧 让frida可以使用就行

 其他反调试可以自己尝试


 frida anti:

基本 frida 附加没问题了呢 还有些反调试这里没有继续找了 这样我们就可以直接实现dump dex文件了呢

关于整体Dump DEX 有很多点可以完成,在art下有如常用DexFile::OpenMemory() 主要是能通过DexFile类结构得到base,size即可

我这里采用的 art::DexFile::DexFile()函数,通常无论你怎么隐藏加密DEX最终都要通过系统函数加载到系统中,dump解决之

先尝试dump DEX看看样本具体表现吧 然后再看情况处理

调试模式启动App 然后frida 附加上 jdb 启动 记得要附加上 反反调试 不然会马上结束掉进程 就没意思了呢


frida Dump Dex:

 具体就是根据android 加载 DEX 文件流程函数 在关键函数() dump 出解密后DEX文件 然后我们再根据具体处理

 跑一下看看dump那些文件吧

 

这里有个小技巧过反调试 这jdb附加上会马上结束进程 如果我们在按下回车键后马上按 ctrl +c 关闭掉就能过掉了呢 然后app就正常启动了


果然在包文件目录下Dump下来了些DEX 打开分析看看 是不是完整了呢~ pull 回来用GDA看看

发现大量抽取了方法代码 通过 H.i 函数进行还原 根据android源码 我们在他加载方法函数(LoadMethod) 再Dump DEX看看是不是已经部分还原了

为了定位具体还原那个方法 我们也 hook H.i( ) 函数 打印一下 参数 就能知道还原那个方法ID了呢

在app随便点击些功能 我这里点击的(虚拟位置功能) 然后比对 看看有没有还原了部分方法代码吧


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2020-5-12 23:28 被ddsf编辑 ,原因:
上传的附件:
收藏
免费 3
支持
分享
最新回复 (10)
雪    币: 4065
活跃值: (3457)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
他是怎么 anti frida的? 
2020-5-12 16:00
0
雪    币: 239
活跃值: (552)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
StriveMario 他是怎么 anti frida的?
应该是扫描内存然后比较frida特征,我找这个思路是用frida附加后一会就自动结束掉进程 猜想就是app启动某个线程循环扫描 所以用ida附加上直接查看线程列表找到线程入口点 看看那些线程可能是反调试线程 找到关键点 直接让其生效就行 具体没深入研究
2020-5-12 16:24
0
雪    币: 529
活跃值: (1005)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4

感谢大佬分享,学习到了!请问大佬能发下apk的下载链接吗

最后于 2020-5-12 23:17 被_air编辑 ,原因:
2020-5-12 22:57
0
雪    币: 239
活跃值: (552)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
_air 感谢大佬分享,学习到了!请问大佬能发下apk的下载链接吗
好的大佬,已经添加附加了呢
2020-5-12 23:39
0
雪    币: 210
活跃值: (641)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
6
感谢分享,姿势好多
2020-5-13 10:01
0
雪    币: 148
活跃值: (780)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
膜拜大佬
2020-5-14 09:40
0
雪    币: 1705
活跃值: (676)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
反frida,线程
2020-6-21 11:42
0
雪    币: 33
活跃值: (789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
dump dex的完整脚本方便提供一下?按照文章每次LoadMethod结束dump dex,最终能得到还原的dex,那和最后附加dump整体dex有啥区别;中间是不是有函数粒度的dump?
2020-6-21 21:04
0
雪    币: 485
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
大佬们,小白请教一下,请问文章中类似的这种symbol.name 是怎么来的?_ZN3art11ClassLinker10LoadMethodERKNS_7DexFileERKNS_21ClassDataItemIteratorENS_6HandleINS_6mirror5ClassEEEPNS_9ArtMethodE 
2021-6-8 15:16
0
雪    币: 485
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
chirous 大佬们,小白请教一下,请问文章中类似的这种symbol.name 是怎么来的?_ZN3art11ClassLinker10LoadMethodERKNS_7DexFileERKNS_21ClassDa ...
已经搞懂了
2021-6-8 16:46
0
游客
登录 | 注册 方可回帖
返回
//