reinforce加固
Last updated
Was this helpful?
Last updated
Was this helpful?
源Apk
壳Apk
加密工具
编译出原包original.apk
编译加固包reinforce.apk
把reinforce.apk的classes.dex解压出来
使用encrypt对classes.dex与original.apk,进行隐藏处理。
使用FQA的修改meta-data方法,把原包的application-name设置上去。
对original.apk或reinforce.apk进行重签名jarsigner。
进行加固包真机测试。以确保apk加固成功。
使用Application反射加载原应用original.apk时,应用音视频无法识别现象。
在使用反射时,项目中的 assets res/raw里的音视频资源会无法识别;
因为在使用MediaPlayer里,会使用到Assetmanager.openNonAssetFdNative 此so方法,会出现无法获取以AssetsFileDescriptor 资源文件描述符的问题
所以处理此问题的方式:把此类资源转为文件系统文件去使用。
file:///android_asset/sound.{ogg|mp3|mp4...}
R.raw.sound此类方式都在加固后被得无效了。但其它资源还是有效的。
此文件的根源为Assetmanager.openNonAssetFdNative无法读取文件的资源描述符。
AndroidManifest修改meta-data方法
apktool d original.apk
完成反编译。
用文本或代码修改需要改的键值,或增减。
apktool b original
会把反编译的包重编译出来,但可能会有缺陷。
unzip original/dist/original.apk AndroidManifest.xml
把修改好的此文件弄出来。
zip -d original.apk AndroidManifest.xml
删除原包的AndroidManifest.xml。
zip -ur original.apk AndroidManifest.xml
把前面重编译出来的文件更新到原包中去。
最后使用jarsigner进行重签名,就大功告成了。
详情,请参考稍后放进我github上的原代码。