1. 首页
  2. 红队技术

android 反编译逆向APP简单实践

【推荐学习】暗月渗透测试培训 十多年渗透经验,体系化培训渗透测试 、高效学习渗透测试,欢迎添加微信好友aptimeok 咨询。

有钱就可以为所欲为了 吗?NO,懂技术才是真的可以为所欲为。分分钟可以逆向别人的app ,做些不可描述的事情。

  今天给大家简单介绍下android app 的反编译相关的简单操作,具体下面几个套路:

  1.反编译app ,常用三件套:apktool,dex2jar,jd-gui-windows  ;

           1.1apktool 反编译出里面apk 包里面的文件,将源码转换成smali 文件,如果你懂samli语言就可以直接修改 源码,如果不懂 ,那你学啊,不想学也行,jetbrain 公司出品的插件java2smali 可以满足你的需求。然后修改后重新打包签名就实现你羞羞的目的。

           1.2 dex2jar 是另外一种思路:将apk 包直接改后缀为rar ,然后解压缩, 就可以找到里面 后缀为.dex源码文件,然后使用dex2jar 将其转化为jar包,使用jd-gui-windows 打开jar包 就可以看到字节码文件。

  2.修改app 源码: 两种类型的源码的修改,

           2.1.原生java代码的修改,上面步骤的 1.1中中的smali文件修改。

           2.2 对native 代码修改,修改动态链接库.so文件。

 下面具体讲讲具体套路细节:

       上面1中的反编译 app 获取smali 文件 或 jar包,的方式已经烂大街了,大家自行百度谷歌。

 重点是修改smali文件和so文件方式,修改smali,了解smali语法你可以看这个博客,了解基本数据类型, 定义对象和 方法的方式。对照上面1.2 中得到的jar 的字节码文件,就可以找到对应的类和方法。比如微信的checkDir方法,解压缩后如下图所示:
android 反编译逆向APP简单实践
android 反编译逆向APP简单实践

对应的jar 包的字节码如下图所示:

android 反编译逆向APP简单实践

如果你想修改这个方法,就可以直接借助 androidStudio 的 插件java2smali,直接写好java代码转换成smali文件,然后再替换原来的smali文件的方法后载打包签名就可以了。

   so 库的源码修改就需要借助 IDA静态分析工具了,apk 包里面的so库 直接拖到IDA中,就可以看到里面的汇编源码了,最终还得修改汇编源码实现你的方法,当然也可以鼠标定位到汇编方法, 按F5 展示c 语言代码。这样方便阅读。

  汇编代码如果下图:
android 反编译逆向APP简单实践

c 代码如下图:

android 反编译逆向APP简单实践

修改完后, 下一步就是重新打包 和签名,否则无法安装。

重新打包命令, apktool.bat b + 包名

签名工具:autosign

   这样就简单的完成了一次反编译之路,但是道高一尺,魔高一丈,逆向和反逆向永远是动态竞争的。现在一些使用加固方式加固APK之后:篡改后无法正常运行、无法正常动态调试、反动态注入无法注入、反编译无法获取到原dex代码或完整的dex代码、So文件的整体加密,使用自定义链接器的技术,对SO文件进行整体的加密,完全阻止 IDA等逆向工具的静态分析。

  也只有不断竞争才能最近技术的发展。代码侠们,技术从来没有停止和灭绝,只有发展的更高更快,和换一种方式重生。


本文来自https://blog.csdn.net/shidalang/java/article/details/84303550,经授权后发布,本文观点不代表立场,转载请联系原作者。

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息