反编译APK

Posted by Don on December 12, 2018

前言

在如今的社会,如果你不会反编译都不好意思说自己是程序员,那么下面开始我们的反编译之旅(此文也包含反编译加壳app示例)。

所需工具

工欲善其事,必先利其器。下面是我们反编译所需的工具:

如果你不知道app是否被加固,那么可以使用该软件检查一下:APP查壳

反编译未加壳apk

  • Step1
    启动Android killer,点击打开,选择apk文件,等待程序运行完毕即可。

-Step2
切换到工程管理器,可以查看反编译的资源和smail代码等。

  • Step3
    查看smali代码,找到你需要查看的文件,点击下图的这个图标即可查看java代码:

  • Step4
    修改你想要修改的内容,然后进行二次打包:
    切换到Android,点击编译

至此,未加固反编译已经完成,如果可以请耐心看完文本,结尾有彩蛋。

反编译加壳apk

  • Step1 脱壳获取dex文件
    请参考我之前的博文先进行脱壳:APP脱壳 ;

  • Step2 替换smali源码
    脱壳后使用上文中的安卓逆向助手反编译dex文件,然后将文件拷贝到smail文件夹下即可。
    如果脱壳后的dex有多个,那么按照文件夹的大小从大到小重命名分别为smail、smail_classes2、smali_classes3等,以此类推!

  • Step3 修复AndroidManifest.xml
    修复AndroidManifest.xml,修改内容包括还原application入口以及删除壳相关代码。
    1.将“application”节点android:name=”com.stub.StubApp”:修改为正常的application
    2.删除与壳相关的代码 例:

  • Step4
    同上文中的Step4。

ps:如果打包后无法正常运行有可能Step3中修复不完全,需要正对不同的加固方式做不同的处理,比如如果使用360的新壳,那么smali文件的oncreate函数是空的,需要手动还原oncreate函数

至此,app反编译已经完成,如果你反编译过程中遇到了一些问题或许这篇文章可以帮助你:Android Killer反编译apk过程中遇到的一些问题