Login
网站首页 > 文章中心 > 其它

夜鹰海盗盟android反编译教程

作者:小编 更新时间:2023-07-03 19:21:42 浏览量:34人看过

下面土嘎嘎小编分享一个简单的Android应用程序反编译教程的概述:

1. ●获取APK文件●:首先,找到你想要反编译的Android应用程序的APK文件。你可以从设备上抓取已安装的应用程序的APK文件,或者从其他来源获得APK文件。

2. ●使用工具进行反编译●:选择一个适合的反编译工具(如Apktool)来对APK文件进行解析和反编译操作。安装并配置所选工具。

3. ●解析APK文件●:使用反编译工具将APK文件解析为其原始资源和Smali代码。这些文件通常会被提取到一个新的目录中。

4. ●查看资源文件●:浏览解析出的资源文件,这包括布局文件、图片、字符串等。这些文件可以帮助你了解应用程序的UI设计和功能。

5. ●查看Smali代码●:Smali是Dalvik字节码的文本表示形式。通过查看Smali代码,你可以了解应用程序的底层逻辑和实现细节。注意,Smali代码可能比Java源代码更难以理解。

6. ●使用反编译器生成Java源代码●(可选):如果你希望查看更高级别的Java源代码而不是Smali代码,你可以使用工具(如dex2jar和JD-GUI)将DEX文件转换为JAR文件,并使用Java反编译器查看生成的Java源代码。

电脑提取下载dex2jar github

注意是>2.0的 如2.1版本,2.0以及之前的版本 不支持多个dex文件


# 最好文件路径别带空格 或者中文

cd 到下载目录 windows使用 并将要反编译的文件放到同级目录下

# 若没有java或直接没反应  请安装或者重装java

d2j-dex2jar.bat XXX.apk  ##也可为xx.dex apk可默认多个dex to jar


若文件较大 请编辑 d2j_invoke.bat文件 修改其中的内存参数 一个为虚拟机最大空间 一个为最小占用


若文件较大 可能刚开始的时候没什么cpu占用 后期会升高很多== 可能是不止编译了dex·· 有的很慢 比如某个100mb的app 可能一个小时 请耐心等待


-Xmx1024m:设置JVM最大可用内存为1024M。


-Xms512m:虚拟机占用系统的最小内存。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。


-XX:MaxPermSize:最大堆大小。这个也适当大些, 所以若出现问题,首先请调整 –Xms512m:将其设置的小一些,就ok了。


注意事项:配置时字符不要写错了,否则可能导致myeclipse环境不可以运行Java程序。


在dex2jar更新v2.1之前笔者是用的一个比较”耿直”的方法解决这个问题,因为dex的method数量有限但是jar包对method是没有特别限制的,所以我写了一个脚本将apk中多个dex先转化为jar文件之后解压缩最后合并打包压缩,同样可以得到完全的反编译文件.


转换为java代码

工具介绍

JD-GUI

JDK7以及之前可以使用 JD-GUI,如果版本>=1.8 各种问题

http://java-decompiler.github.io


procyon-decompiler

如果版本>=1.8 ,可以使用 procyon-decompiler,不过是命令行界面

https://bitbucket.org/mstrobel/procyon/downloads/


在代码支撑方面,JDK 1.7引入了字符串Switch、泛型接口改进等新功能,1.8增加了lambda表达式、方法传递、多重注解等新特性,这使得反编译工具的编写难度加大,Procyon-Decompiler支持JDK1.8类的反编译,在很多方面做得非常不错:

字符串的Switch

枚举声明方面

注解方面

匿名类、内部类

Java8新接口规范

Java8 Lambda表达式

Java8 方法传递

另外它在反编译后输出多种类型的结果,如Java源码、原始字节码、字节码AST


可以直接解析class文件到cmd窗口显示

也可以将反编译之后的文件保存到指定位置,如果需要保存在指定位置,需要增加 -o命令参数,并且需要指定保存的路径


java -jar procyon-decompiler的绝对路径 -jar 想反编译文件的绝对路径 -o 输出文件夹的绝对路径

 

直接显示:

java -jar D:\ApplicationFiles\program\procyon-decompiler-0.5.30.jar D:\ProgramData\ideaProjects\...\news\NewsController.class

 

保存文件:

java -jar D:\ApplicationFiles\program\procyon-decompiler-0.5.30.jar D:\ProgramData\ideaProjects\...\news\NewsController.class -o C:\Users\noteless\Desktop\dddddd


luyten

luyten是Procyon的GUI,只需要下载luyten即可,不用下载Procyon

https://github.com/deathmarine/Luyten


下载地址

https://github.com/deathmarine/Luyten/releases


crf

crf也可以支持更高版本

http://www.benf.org/other/cfr/


jeb

一般情况下我们都是使用dex2jar + jd-gui的方式反编译代码,在实际使用过程中,有时候发现反编译出来的代码阅读效果不是很好,所以就尝试使用其他的方式反编译代码。


JEB是Android应用静态分析的de facto standard,除去准确的反编译结果、高容错性之外,JEB提供的API也方便了我们编写插件对源文件进行处理,实施反混淆甚至一些更高级的应用分析来方便后续的人工分析.(摘自乌云)。


jeb凭借其牛X的保护措施和高昂的售价,使得诸多普通逆向爱好者望而却步,当然ida也是,目前网络上仅流传着jeb 1.5和ida 6.6的破解版,虽是旧版,面对很多情况依然是绰绰有余。


小结

如果你的版本<=7,都可以使用,如果版本更高,请使用除了JD-GUI以外的选择

而且若有内部匿名类 请使用除了JD的工具


反编译遇到的奇怪代码

需要先看java面向对象 匿名内部类那里的几种情况

其次



土嘎嘎技术网友情提示:由于应用程序可能使用了混淆技术和其他保护机制,反编译后的代码可能不会与原始源代码完全一致,并且可能难以理解。此外,需要确保在进行反编译操作时遵守当地的法律法规和软件许可协议。

这个简单的教程只是反编译的基本过程,实际上,Android应用程序的反编译和分析涉及更复杂的技术和工具。如果你对逆向工程和反编译有兴趣,建议深入学习相关知识并寻找更详细的教程和资源。


版权声明:倡导尊重与保护知识产权,本站有部分资源、图片来源于网络,如有侵权,请联系我们修改或者删除处理。
转载请说明来源于"土嘎嘎" 本文地址:http://www.tugaga.com/jishu/other/974.html
<<上一篇 2023-07-03
下一篇 >> 2023-07-03

编辑推荐

热门文章