商汇粹外网资源平台

搜索
查看: 3441|回复: 5

反编译Android APK的具体步骤是怎样的?

[复制链接]

该用户从未签到

11

主题

30

帖子

109

积分

注册会员

Rank: 2

积分
109
发表于 2022-9-22 17:32:00 | 显示全部楼层 |阅读模式
在自学Android,一个月之前手贱,给电脑做了双系统,喜闻乐见的全盘格式化了,没有任何资料备份,手上一个项目只剩下一个apk文件,是AndroidStudio写的,现在自己反编译出来,代码导入IED各种报错,首先代码本身结构已经改变,出现了很多莫名其妙的for(;;)语句如下图

1.出现了奇怪的for(;;)
2.很多地方有这种八竿子打不着的return,导致死代码
2.其实还有一个就是所有http://R.XXX所对应的id号被转成了int数字(当然,本身也就是),但是在项目里面果断的无法识别了=。=
回复

使用道具 举报

该用户从未签到

3

主题

56

帖子

194

积分

注册会员

Rank: 2

积分
194
发表于 2022-9-22 18:02:33 | 显示全部楼层
如果所有的apk都能这样反编译出来的话——山寨应用就要摧毁Android了~
当然——我也不知道咋办,其实比较靠谱的方法是:立刻停止对原来硬盘的读写,试着用easyrecovery来试试能不能恢复数据,对于快速格式化来说,这是有救的
回复

使用道具 举报

该用户从未签到

7

主题

49

帖子

185

积分

注册会员

Rank: 2

积分
185
发表于 2022-9-22 19:03:39 | 显示全部楼层
既然是自己写的。。重写一遍也花不了多少时间。。
回复

使用道具 举报

该用户从未签到

7

主题

52

帖子

165

积分

注册会员

Rank: 2

积分
165
发表于 2022-9-22 19:34:12 | 显示全部楼层
改后缀解压缩,用dex2jar把classes.dex转为jar
反编译jar
不过反编译出来的代码肯定和原版的有所差异。
回复

使用道具 举报

该用户从未签到

3

主题

64

帖子

196

积分

注册会员

Rank: 2

积分
196
发表于 2022-9-22 20:04:45 | 显示全部楼层

  • APK代码反编译
首推工具jadx(.apk, .dex, .jar, .class, .smali, .zip, .aar, .arsc, .aab),下载地址:https://github.com/skylot/jadx,将APK直接用工具打开即可,简单省时。


  • 系统源码反编译
以华为mete30-hwPartIawareService.jar为例。
不同的Android版本,java代码部分大致分为jar, dex, vdex,cdex三种格式。根据不同的格式采用不同工具进行反编译。

  • jar,dex格式,可以采用jadx, 直接pull到电脑中,用jadx打开。 格式如上图。不过多赘述。
  • vdex格式,需要下载vdexExtractor 进行转换。执行./cdexExtractor/vdexExtractor -i hwPartIawareService.vdex ,生成cdex文件,./cdexExtractor/compact_dex_converter hwPartIawareService_classes.cdex 生成hwPartIawareService_classes.cdex.new dex文件,可采用jadx打开,(vdexExtractor -- https://github.com/anestisb/vdexExtractor)
  • odex格式,执行命令java -jar baksmali-2.5.2.jar d hwPartIawareService.odex -l --di false --sl 生成对应的out目录,其中为smail文件。执行java -jar smali-2.5.2.jar a out ,会将对应的out目录生成out.dex,直接用jadx打开(https://bitbucket.org/JesusFreke/smali/downloads/)。


  • Jni.so代码反编译   
可采用IDA_Pro_v7.0_Portable工具进行代码查看,选择arm格式进行反编译。并选中反编译后的方法名,F5进行代码反编译。

回复

使用道具 举报

该用户从未签到

4

主题

32

帖子

105

积分

注册会员

Rank: 2

积分
105
发表于 2022-9-22 20:35:18 | 显示全部楼层
最近突然百度热搜上面出现了一个小程序游戏;想必大家已经感受到了。朋友圈各种微信朋友群;都是铺天盖地的小程序链接。
许多人纷纷都跟上风潮,玩第一关诶,这不是很简单吗?
5分钟后,第二关开启……

于是“疯了”一大批人,各种找攻略。抖音上很多出攻略的、直播通关的。还有我们这种Android开发程序员;直接上手自己做一个。制作同款最简单的方法就是直接进行反编译。那么Android的反编译如何学习呢?本篇文章带你学习Android反编译,跟上车速发车啦!
Android APK反编译

首先反编译别人的APK,主要是学习别人的实现逻辑,给自己一个思路。比较商业的APK也不会给你留下这个漏洞,一些核心的业务处理会在后台进行操作;本地的 APK 也会进行混淆加密等。
反编译的三种方法

工具


  • Apktool
  • dex2jar
  • jd-gui
Apktool

使用方法

使用方式:
1.反编译



1apktool d test.apk

反编译后在home目录下生成了一个文件夹,各个文件简单介绍如下:
apktool.yml: apk属性. AndroidManifest.xml: 清单文件, 非二进制. original: 原始数据, 应用的二进制清单和签名. res: 资源文件. smali: dex解析的代码.smali是dex虚拟机的解析格式,在 dex2jar中,也包含smali格式的转换.
打开AndroidManifest文件, 可以看到app_name和app的图标:


1android:icon="@drawable/icon_meetyou" android:label="@string/app_name"

接下来我们修改res/values/strings.xml下app_name的内容,并替换app图标
2.重新打包成apk



1apktool b test

打包后在dist文件夹下生成新的apk文件。
dex2jar

dex2jar是dex转换为jar的工具,很多人不会看smali文件,还是看java类文件比较舒服,这个时候可以借助这个工具来转成java代码。
使用方法

从Apk中解压出class.dex,使用dex2jar进行源码解析,在当前目录生成classes.dex.dex2jar.jar。 转换过程中, 如果发生内存不够, 修改 d2j_invoke.sh 的虚拟机配置.


1java -Xms512m -Xmx1024m -classpath "${_classpath}" "$@"

接下来使用JD-GUI打开jar包
android killer

集成了上面几个工具,并添加了一些功能
ClassyShark

ClassyShark是一款可以查看Android可执行文件的浏览工具,支持.dex, .aar, .so, .apk, .jar, .class, .xml 等文件格式,分析里面的内容包括classes.dex文件,包、方法数量、类、字符串、使用的NativeLibrary等。
使用方法


  • 打开apk文件java -jar ClassyShark.jar -open
  • 将生成的所有数据导出到文本文件里java -jar ClassyShark.jar -dump
  • 将指定类生成的文件导出到文本文件里java -jar ClassyShark.jar -dump
  • 打开ClassyShark,在GUI界面展示某特定的类
  • java -jar ClassyShark.jar -open
  • 检测APKjava -jar ClassyShark.jar -inspect
  • 导出所有的字符串 java -jar ClassyShark.jar -stringdump
和其他的工具不同,ClassyShark通过分析App的项目结构和引用库的信息,我们大致掌握了该项目的架构,一些开发中的经验和不足,拓宽下开发视野,发现一些好用的开源库,增强我们的武器,这些都是我们在开发中可以借鉴的东西。
以上就是借住工具进行反编译操作,Android反编译就是逆向行为。更多Android开发技术学习可以参考->《Android核心技术手册》


再回到《羊了个羊》,现在网上就出现了许多破解版。所以就是因为很多人用到了反编译。

那么大家开发好的apk很多人都不想被反编译吧,那么如何防止反编译呢?这就得往《Android性能优化》里的安全性优化说了。 我们对程序进行加密、加壳等安全措施以防范软件被破解。 反编译是一个对目标可执行程序进行逆向分析,从而得到源代码的过程。
关于Android的逆向过程,我专门找了一个视频讲解。B站: 华为资深专家深度教学;AndroidIO加密文件改造全过程;dex文件加密、解密;apk打包、解包、加壳、脱壳!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表