首页
社区
课程
招聘
[讨论][原创][求助]基于Xposed的不那么通用的脱壳机
2015-9-15 00:32 20327

[讨论][原创][求助]基于Xposed的不那么通用的脱壳机

2015-9-15 00:32
20327
基于Xposed的不那么通用的脱壳机

大四狗一枚,自学android一年有余,所以也来试试写个脱壳机啦。
首先声明需要安装Xposed,其次仅测试了腾讯加固宝和阿里聚。因为只逆向过这两个,知道原理,调试起来也比较容易。
测试环境:Android 4.1

需要感谢
http://bbs.pediy.com/showthread.php?t=203776
http://bbs.pediy.com/showthread.php?t=190494&highlight=zjdroid
两位大大
部分代码结构完全来源于两位

原理挺简单,大伙直接看代码就一清二楚了。
https://github.com/CvvT/DumpApk

测试腾讯的时候直接dump的dex代码中含有odex opcode,本来想那就直接dump整个odex文件,但是不知道为何dump出来的odex经过 baksmali.jar处理报了一堆错误,调试多天无果。卒。
还没来得及测试其他加固产品,脱壳原理可能比较有针对性,因而不适合其他产品,但还是发上来希望能有大大和我一起交流讨论

update 9.29
既解决阿里的问题之后终于知道tecent的问题在哪了,原来是手机的原因,我测试用的是miui

update 10.19
分享一下自己做的ppt
https://github.com/CvvT/DumpApk/blob/master/share.pptx
为了图方便,直接盗用了一些图,仅供学习交流,侵删

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

收藏
点赞0
打赏
分享
最新回复 (36)
雪    币: 6
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
妖友 2015-9-15 07:00
2
0
感谢楼主分享
雪    币: 1049
活跃值: (345)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bengou 2015-9-15 08:28
3
0
不错,这种hook方案。
雪    币: 35
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
a白小痴 2015-9-15 16:30
4
0
感谢楼主分享
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fancily 2015-9-16 10:04
5
0
谢谢分享,马上测试.
雪    币: 74
活跃值: (166)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
LOVEZ 2015-9-16 17:56
6
0
感谢楼主分享
雪    币: 178
活跃值: (317)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jiych 2015-9-16 22:34
7
0
楼主,我在4.3上测试,发送广播命令没有反应呢?
雪    币: 8
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qgesxcwt 2015-9-17 16:06
8
0
我把需要注入的包名硬编码在代码中,你可能需要修改,见Xposed.java
雪    币: 178
活跃值: (317)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jiych 2015-9-17 16:39
9
0
确认改掉了,只有发送广播命令没响应,其它的log都有的,如果没有改,其它log也肯定不会出来。我也很奇怪,CommandBroadcastReceiver就像没有注册一样
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wapjia 2015-9-17 20:06
10
0
坐等楼主出小白直接可以用的,这么复杂表示不会用。
雪    币: 8
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qgesxcwt 2015-9-18 11:11
11
0
可能是在ModuleContext中,tecent和ali需要hook的方法还有点不一样,虽然可以都hook了,但是我懒得改啦。。。initModuleContext方法中你看看
雪    币: 178
活跃值: (317)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jiych 2015-9-18 12:32
12
0
确实。。看到代码里注释掉了,我回头试试,谢谢。
雪    币: 8
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qgesxcwt 2015-9-27 01:04
13
0
终于知道为什么不能将odex转成dex了,代码里一个偏移量写错了,囧
PS.最近在整理一些资料,结合自己写的这些工具以及自己所学知识,出一份关于脱壳的的ppt.也会放到github上的
雪    币: 105
活跃值: (196)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
lcweik 1 2015-9-28 18:46
14
0
怎么发现这个秘密的
雪    币: 8
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qgesxcwt 2015-9-29 23:17
15
0
????
雪    币: 105
活跃值: (196)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
lcweik 1 2015-9-29 23:22
16
0
就是改偏移这个秘密呀
雪    币: 8
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qgesxcwt 2015-9-30 21:32
17
0
这不是什么秘密,是我自己大意了,一个值的计算忘记考虑头部大小而已
雪    币: 1694
活跃值: (253)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
黯夏子风 3 2015-10-10 10:53
18
0
dump内存后抠取dex,反编后smali里面好多#disallowed odex opcode,楼主帮忙解答一下,谢谢
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lich 2015-10-10 21:27
19
0
雪    币: 275
活跃值: (320)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
currwin 1 2015-10-11 15:50
20
0
作者你好,我想请教一下,我在编译您的源码时,总是会提示一个问题:
:app:dexArmDebug
UNEXPECTED TOP-LEVEL EXCEPTION:
...while parsing android/support/v7/appcompat/R$anim.class
。。。
Error:Execution failed for task ':app:dexArmDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\environment\JDK8\bin\java.exe'' finished with non-zero exit value 1
   然后就编译失败了,不知道是不是我配置有问题,求教一下。
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lich 2015-10-11 20:25
21
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lich 2015-10-11 20:37
22
0
如果用 Android studio 应该不会用问题的,工程能顺利产生二个apk文件和libdump.so文件。你可能用eclipse,代码要重新组织的。
雪    币: 275
活跃值: (320)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
currwin 1 2015-10-12 09:32
23
0
原因找到了,是jdk的问题,gradle中加入
gradle中配置java版本
tasks.withType(JavaCompile) {            //指定编译JDK版本            
sourceCompatibility = JavaVersion.VERSION_1_7            
targetCompatibility = JavaVersion.VERSION_1_7        
}
就可以了
雪    币: 275
活跃值: (320)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
currwin 1 2015-10-12 09:35
24
0
作者再求解一下,像这种使用xposed的要怎么进行调试呢。调试方面一直觉得很麻烦。目前我是在注入代码上使用waitfordebugger进行远程调试的,不知道有没有更加简单的方法呢
雪    币: 8
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qgesxcwt 2015-10-12 22:22
25
0
我之前改了代码你可以更新一下,直接dump odex文件,你需要自己用baksmali转成dex
游客
登录 | 注册 方可回帖
返回