新的 APK 加固方法?

2020-05-27 08:01:57 +08:00
 kingof
最近发现一个挺有意思的 apk 加固的方式,
简单来说,他把每个方法的方法体里面的代码全部隐藏,
反编译出来方法体内全部是 return null,
查看 smali 则有大量的 nop 指令。

想请教一下大家知不知道这是什么工具实现的?


图片如下:
![AowuO.png]( https://s3.jpg.cm/2020/05/27/AowuO.png)
![AooBw.png]( https://s3.jpg.cm/2020/05/27/AooBw.png)
15496 次点击
所在节点    Android
21 条回复
FourAndHalf
2020-05-27 08:07:27 +08:00
啥工具?
nilai
2020-05-27 08:16:37 +08:00
抽空 再填充
iFlicker
2020-05-27 08:52:59 +08:00
之前记得有个操作是把方法内容都抽到 native 层
hugedeffing
2020-05-27 08:59:03 +08:00
没看到包不知道具体操作,猜测基本逻辑应该还是 java2c,dex 取 insn 块,填充 return null,批量加 tag,后续 c 层回调用 java 或者回填字节码。问题在于如何进行函数对标,考虑可能是函数签名做唯一标识,但只是猜测,直接打个 id 和用函数签名其实差不多。
MaxLi77
2020-05-27 09:29:13 +08:00
这是几年前的技术了。。不过加固技术基本已经到头,以后估计也不会有太多新技术。。
janxin
2020-05-27 10:10:20 +08:00
加壳吧,抽出来放 native 里了
InkStone
2020-05-27 10:39:45 +08:00
指令抽取。要破解的话一般是用定制 ROM,在底层主动调用触发方法 byte code 回填。

你去看银行的 app,一般都是指令抽取的加固。
kingof
2020-05-27 11:00:12 +08:00
@MaxLi77
@hugedeffing

有没有类似的加固工具?
hugedeffing
2020-05-27 11:09:06 +08:00
@kingof 基本大厂都有,免费的也有,github 上也有开源的
fixend
2020-05-27 11:09:34 +08:00
@kingof 网易网盾?
ifxo
2020-05-27 11:10:35 +08:00
至少是 5 年前的方法了吧
kingof
2020-05-27 12:02:07 +08:00
@ifxo 我真是 outdate 了:),这种方我还是第一次见
kingof
2020-05-27 12:02:34 +08:00
@fixend 感谢感谢,试一下
kingof
2020-05-27 12:03:12 +08:00
@hugedeffing 开源的,能给个名字或关键词吗?
MaxLi77
2020-05-27 14:57:06 +08:00
@kingof

各大加固厂都有,稳定性,兼容性比开源的要好
YouKnowIt
2020-05-27 19:06:20 +08:00
这个是 smali 指令抽取,将 dex 中方法的指令抽走,然后利用 hook 技术在 dalvik/art 中注入代码,当 dalvik/art 执行到这个方法时,把抽走的的指令再填充回来;这种加固方法目前也是有比较稳定的脱壳工具的,一般都在 art 中强行回填所有的指令,再把 dex 拿下来。更强的是 dex vmp 了,鄙人不才,曾写过一篇文章, google 搜索 《 Android DEX-VMP 虚拟保护技术》

![]( https://note.youdao.com/yws/api/personal/file/WEB6257433f62df857cab1cb04a997a1093?method=download&shareKey=f07da1da1c99a6a7b7a982920d22ce3d)
![]( https://note.youdao.com/yws/api/personal/file/WEBc9611c867e699c63d5cb19fe0ee65a4b?method=download&shareKey=2007fce0d8835820ce396364350e5fb6)
![]( https://note.youdao.com/yws/api/personal/file/WEBaf6a6e6f036d29861b21e8db61c951d6?method=download&shareKey=1197e0cbc415de156d72509f982207c9)
YouKnowIt
2020-05-27 19:09:17 +08:00
@MaxLi77 哥们说得对,加固技术基本到头了
amimo
2020-05-27 19:57:19 +08:00
这种加固方案依赖于虚拟机的实现,会有兼容性问题,每个安卓版本都得适配.java2c 有开源的实现,搜索 dex to c compiler.
kingof
2020-05-28 09:50:58 +08:00
@YouKnowIt
@amimo


感谢两位大佬
YouKnowIt
2020-05-28 11:40:20 +08:00
@amimo 是的,有兼容性问题,我也提到过。不过兼容性问题是可以慢慢收敛的,现在,这种方案我个人觉得兼容性,稳定性已经做的可以了,毕竟也经过不少商业客户线上检验

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/675814

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX