mao
mao
简单opcode随机化可能被人找到映射,可以改动下dalvik指令,增加或者合并一些指令提高分析难度。指令相关处理可以通过修改r8的实现,这个部分不适合公开所以开源的就没这部分。还有就是周边一些签名效验、防hook之类的东西,vm编译也可以引入ollvm这类混淆。 再就是apk一些特殊处理,修改一些flags(比如伪加密)让正常zip处理程序出错之类,不过这些感觉用处不大。
提升强度感觉主要还是在对指令集处理上。目前我自己做法是在dex转为c代码前引入修改过的r8来生成自定义指令集,之后再转为c代码。
在ndk目录下找strip的路径,然后自己改jar同目录下tools里的配置文件。
简单改名从java代码修改,BuildNativeLib.java里面。复杂些把nmmvm变成静态库最后生成一个so,需要稍微改下打包逻辑,打包相关也不复杂只是些简单的zip操作哪里报错改哪里就行。
androidx相关应该跟加载so位置有关,你可以在自定义application里加载so。 还有没必要处理公开的lib,这纯粹给别人逆向提供后门,别人拿没加固前的代码,对比虚拟化后的指令序列,不需要分析vm就能轻易找到映射。
之前issue有androidx相关问题,就是在某次升级改变.so加载位置后报错的,因为加固androidx除了测试兼容性外没什么意义,所以没处理。最简单的解决方法就是自定义application里加载so, 早期版本是这样做,你可以参照早期的代码。
你找下llvm-strip的位置,不同ndk版本这个路径好像有区别
直接改BuildnNativeLib.java,里面有这些路径修改。其他系统不同ndk版本我也没有环境测试,改源码就行了。
jar运行后目录下会出现tools目录,里面有配置文件,不过那个只配置了linux跟windows,你可以修改看看
加固原理写在介绍里,又不是把文件藏来藏去才叫加固。加固后自己要重新签名。 MrMeng ***@***.***> 于 2023年7月11日周二 20:18写道: > 还有作者 我发现 加固完之后 好像没啥区别 加固完安装不了了 我看你这文档 是需要执行 apksigner 这个命令是吧 这个命令是啥啊? > > — > Reply to this email directly, view it on GitHub...