android 反编译逆向APP简单实践

       有钱就可以为所欲为了 吗?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简单实践_第1张图片

android 反编译逆向APP简单实践_第2张图片

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

android 反编译逆向APP简单实践_第3张图片

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

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

      汇编代码如果下图:

android 反编译逆向APP简单实践_第4张图片

c 代码如下图:

android 反编译逆向APP简单实践_第5张图片

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

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

签名工具:autosign 

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

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

 

你可能感兴趣的:(技术,生活,想法,脑洞)