【反编译系列】一、反编译代码(dex2jar + jd-gui)和反编译资源(apktool) 【反编译系列】二、反编译代码(jeb)【反编译系列】三、反编译神器(jadx)【反编译系列】四、反编译so文件(IDA_Pro) (2)

【反编译系列】一、反编译代码(dex2jar + jd-gui)和反编译资源(apktool) 【反编译系列】二、反编译代码(jeb)【反编译系列】三、反编译神器(jadx)【反编译系列】四、反编译so文件(IDA_Pro)

查看jar文件(将jar文件转换成java代码)

可以看到,classes-dex2jar.jar这个文件就是我们借助工具之后成功转换出来的jar文件了。但是对于我们而言,jar文件也不是可读的,因此这里还需要再借助一下jd-gui这个工具来将jar文件转换成java代码。

双击jd-gui.exe,打开jd-gui

【反编译系列】一、反编译代码(dex2jar + jd-gui)和反编译资源(apktool) 【反编译系列】二、反编译代码(jeb)【反编译系列】三、反编译神器(jadx)【反编译系列】四、反编译so文件(IDA_Pro)

将classes-dex2jar.jar拖拽到jd-gui软件中打开预览

【反编译系列】一、反编译代码(dex2jar + jd-gui)和反编译资源(apktool) 【反编译系列】二、反编译代码(jeb)【反编译系列】三、反编译神器(jadx)【反编译系列】四、反编译so文件(IDA_Pro)

导出代码,借助Android Studio打开,便于全局搜索【按需操作】

当反编译的项目比较大的时候,那么在jd-gui软件中进行全局搜索某个变量名时,几乎是不可能的。那么一个比较好的解决方案是,通过jd-gui软件将所有的反编译项目的代码导出,然后通过Android Studio打开(虽然会报错,不过不用管),这样就可以借助Android Studio的全局搜索功能进行快速搜索查找了。

File——Save All Sources

【反编译系列】一、反编译代码(dex2jar + jd-gui)和反编译资源(apktool) 【反编译系列】二、反编译代码(jeb)【反编译系列】三、反编译神器(jadx)【反编译系列】四、反编译so文件(IDA_Pro)

指定导出目录以及文件名(我这边默认处理)

【反编译系列】一、反编译代码(dex2jar + jd-gui)和反编译资源(apktool) 【反编译系列】二、反编译代码(jeb)【反编译系列】三、反编译神器(jadx)【反编译系列】四、反编译so文件(IDA_Pro)

【反编译系列】一、反编译代码(dex2jar + jd-gui)和反编译资源(apktool) 【反编译系列】二、反编译代码(jeb)【反编译系列】三、反编译神器(jadx)【反编译系列】四、反编译so文件(IDA_Pro)

根据反编译项目的包名,通过Android Studio创建一个空白项目,然后将项目代码复制到新建的空白项目中

包名的获取:通过反编译资源,得到AndroidManifest.xml文件,查看package属性值。

【反编译系列】一、反编译代码(dex2jar + jd-gui)和反编译资源(apktool) 【反编译系列】二、反编译代码(jeb)【反编译系列】三、反编译神器(jadx)【反编译系列】四、反编译so文件(IDA_Pro)

如果想要把资源也复制到新建空白项目中的话,那么就按照反编译资源的操作步骤进行操作。

反编译资源 下载

apktool:这个工具用于最大幅度地还原APK文件中的9-patch图片、布局、字符串等等一系列的资源。

下载地址:见文章末尾。

安装

直接解压即可,然后跟上面的两个软件放到同一个目录下。

【反编译系列】一、反编译代码(dex2jar + jd-gui)和反编译资源(apktool) 【反编译系列】二、反编译代码(jeb)【反编译系列】三、反编译神器(jadx)【反编译系列】四、反编译so文件(IDA_Pro)

反编译资源

将需要反编译的APK文件复制到该目录下

【反编译系列】一、反编译代码(dex2jar + jd-gui)和反编译资源(apktool) 【反编译系列】二、反编译代码(jeb)【反编译系列】三、反编译神器(jadx)【反编译系列】四、反编译so文件(IDA_Pro)

打开命令行提示符,定位到apktool目录

【反编译系列】一、反编译代码(dex2jar + jd-gui)和反编译资源(apktool) 【反编译系列】二、反编译代码(jeb)【反编译系列】三、反编译神器(jadx)【反编译系列】四、反编译so文件(IDA_Pro)

输入命令:apktool.bat d -f helloworld.apk -o helloworld

命令中helloworld.apk指的是要反编译的APK文件全名,helloworld为反编译后资源文件存放的目录名称,即为:apktool.bat d –f [apk文件 ] –o [输出文件夹]

-f 如果目标文件夹已存在,则强制删除现有文件夹(默认如果目标文件夹已存在,则解码失败)。

-o 指定解码目标文件夹的名称(默认使用APK文件的名字来命名目标文件夹)。

-s 不反编译dex文件,也就是说classes.dex文件会被保留(默认会将dex文件解码成smali文件)。

-r 不反编译资源文件,也就是说resources.arsc文件会被保留(默认会将resources.arsc解码成具体的资源文件)。

【反编译系列】一、反编译代码(dex2jar + jd-gui)和反编译资源(apktool) 【反编译系列】二、反编译代码(jeb)【反编译系列】三、反编译神器(jadx)【反编译系列】四、反编译so文件(IDA_Pro)

报错不用管,成功之后发现在文件夹下多了个helloworld文件夹,点击便可以查看该应用的所有资源文件了。

【反编译系列】一、反编译代码(dex2jar + jd-gui)和反编译资源(apktool) 【反编译系列】二、反编译代码(jeb)【反编译系列】三、反编译神器(jadx)【反编译系列】四、反编译so文件(IDA_Pro)

  

【反编译系列】一、反编译代码(dex2jar + jd-gui)和反编译资源(apktool) 【反编译系列】二、反编译代码(jeb)【反编译系列】三、反编译神器(jadx)【反编译系列】四、反编译so文件(IDA_Pro)

文章所需软件下载地址

链接:https://pan.baidu.com/s/1LcPyuWJp1vzQJXaT3yFWkQ 密码:owwa

参考资料

Android安全攻防战,反编译与混淆技术完全解析(上)

Android APK反编译就这么简单 详解(附图)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyssjp.html