在非root环境下,使用xposed,且不依赖于其他虚拟化容器环境。使得xposed有二次分包的能力。
ratel本身是一个嵌入式沙盒,或者是一个加壳机,他可以给指定一个apk加壳,但是这个壳的代码很特殊,壳并不是做代码保护的,而是由壳实现AOP。 ratel在运行的时候,首先导入xposed环境,完成xposed模块加载,然后将控制权交给原始的app。由于原始app在运行之前,就被xposed框架给挟持了,所以原始app的行为将受到xposed模块的控制
xposed需要比较麻烦的安装环境,ratel的目标只是实现进程内的hook,所以ratel使用exposed替代xposed框架。底层使用阿里的dexposed(4.x一下)或者epic(5.x以上),非常感谢epic作者
github: https://github.com/virjar/ratel
码云: https://gitee.com/virjar/ratel
apktool: 从apktool项目迁移过来,用来实现apk的重新打包
crackmodule:一个xposed模块demo,实现对demoapp的挟持
demoapp:一个app的demo,其中方法com.virjar.ratel.demoapp.MainActivity.text将会被crackmodule挟持
ratel-driver:驱动项目,作为打包产生的apk的入口,负责组装和加载其他模块
ratel-tool:一个java项目,作为ratel打包的工具入口,可以build为一个独立jar包,提供打包服务
得到ratel jar包,执行java -jar 命令,传入两个apk文件名称即可
如:java -jar ratel-tool/build/libs/ratel-tool-1.0.0.jar test/crackmodule-debug.apk test/demoapp-debug.apk
命令执行完成之后,将会产生一个新的apk文件,xxx_ratel_unsigned.apk
,该文件即为合并好的apk
对apk签名
jarsigner -verbose -keystore ~/Downloads/dwjmantou.keystore com.virjar.ratel.demoapp_1.0_1_ratel_unsigned.apk dwjmantou.keystore
具体签名方法,参考apktool apk签名教程
签名后,在手机中安装输出的apk
致谢: https://github.com/android-hacker/exposed https://github.com/iBotPeaches/Apktool
dengweijiadeMacBook-Pro:ratel virjar$ java -jar ratel-tool/build/libs/ratel-tool-1.0.0.jar test/crackmodule-debug.apk test/demoapp-debug.apk
clean working directory:/Users/virjar/git/ratel/ratel_work_dir
release ratel container apk ,into :/Users/virjar/git/ratel/ratel_work_dir/ratel-driver.apk
对目标apk解包...
十月 06, 2018 10:19:24 下午 brut.androlib.ApkDecoder decode
信息: Using Apktool @version@ on demoapp-debug.apk
十月 06, 2018 10:19:24 下午 brut.androlib.res.AndrolibResources loadMainPkg
信息: Loading resource table...
十月 06, 2018 10:19:25 下午 brut.androlib.res.AndrolibResources decodeManifestWithResources
信息: Decoding AndroidManifest.xml with resources...
十月 06, 2018 10:19:25 下午 brut.androlib.res.AndrolibResources loadFrameworkPkg
信息: Loading resource table from file: /Users/virjar/Library/apktool/framework/1.apk
十月 06, 2018 10:19:28 下午 brut.androlib.res.AndrolibResources adjustPackageManifest
信息: Regular manifest package...
十月 06, 2018 10:19:28 下午 brut.androlib.res.AndrolibResources decode
信息: Decoding file-resources...
十月 06, 2018 10:19:30 下午 brut.androlib.res.AndrolibResources decode
信息: Decoding values */* XMLs...
十月 06, 2018 10:19:30 下午 brut.androlib.Androlib decodeSourcesRaw
信息: Copying raw classes.dex file...
十月 06, 2018 10:19:30 下午 brut.androlib.Androlib decodeRawFiles
信息: Copying assets and libs...
十月 06, 2018 10:19:30 下午 brut.androlib.Androlib decodeUnknownFiles
信息: Copying unknown files...
十月 06, 2018 10:19:30 下午 brut.androlib.Androlib writeOriginalFiles
信息: Copying original files...
移出原apk中无用文件
嵌入扩展apk文件
植入容器代码...
修正AndroidManifest.xml...
重新打包apk...
十月 06, 2018 10:19:31 下午 brut.androlib.Androlib build
信息: Using Apktool @version@
十月 06, 2018 10:19:31 下午 brut.androlib.Androlib buildSourcesRaw
信息: Copying ratel_work_dir/ratel_origin_apk classes.dex file...
十月 06, 2018 10:19:31 下午 brut.androlib.Androlib buildResourcesFull
信息: Building resources...
十月 06, 2018 10:19:32 下午 brut.androlib.Androlib buildApk
信息: Building apk file...
十月 06, 2018 10:19:33 下午 brut.androlib.Androlib buildUnknownFiles
信息: Copying unknown files/dir...
十月 06, 2018 10:19:34 下午 brut.androlib.Androlib build
信息: Built apk...
清除工作目录..
输出apk路径:/Users/virjar/git/ratel/com.virjar.ratel.demoapp_1.0_1_ratel_unsigned.apk
所有演示相关的二进制文件,都在demo_apks目录下
如果你觉得作者辛苦了,可以的话请我喝杯咖啡
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。