首页 > 其他分享 >mac环境下Android 反编译

mac环境下Android 反编译

时间:2022-12-09 19:00:29浏览次数:67  
标签:dex 反编译 文件 jar mac 文件夹 apktool Android


一、需要的工具

  1. apktool:反编译APK文件,得到classes.dex文件,同时也能获取到资源文件以及布局文件。
  2. dex2jar:将反编译后的classes.dex文件转化为.jar文件。
  3. jd-gui:用于将.jar文件转换成java代码。

二、反编译步骤

第一步:使用​​apktool​​工具对APK进行反编译

1. 下载apktool

下载apktool

2. 把下载好的apktool脚本和apktool.jar文件移动到 /usr/local/bin 文件夹下

菜单栏点击「前往」→ 「前往文件夹」

前往 /usr/local/bin 文件夹

将apktool脚本和apktool.jar文件复制到此文件夹

3. 使用命令chmod +x 分别对apktool和apktool.jar文件进行提权

//先进入到/usr/local/bin文件夹下

cd /usr/local/bin
chmod +x apktool
chmod +x apktool.jar

4. 测试是否成功,终端输入apktool,若成功,如下图

apktool安装完成

5. 运行apoktool脚本进行反编译

①. 把你需要反编译的apk文件也复制到 ​​/usr/local/bin​​​ 文件夹下,确保​​apktool​​​、​​apktool.jar​​​以及apk文件都在​​/usr/local/bin​​​目录下
②. 终端输入命令 ​​​apktool d xxx.apk​​回车,等待执行完毕

//如果当前已在/usr/local/bin 目录下,忽略此步
cd /usr/local/bin

//开始反编译目标APK文件
apktool d xxx.apk

执行脚本反编译apk文件

③. 执行完毕后目录下会生成反编译apk的对应文件夹

反编译成功

但是我们在反编译apk后的文件夹里并没有看到classes.dex文件,这时候就需要在上述命令行添加-s,表示禁止将dex文件解码成smali

apktool d -s xxx.apk

禁止将dex文件解码成smali

成功生成classes.dex文件

第二步:使用dex2jar工具把classes.dex文件转化成.jar文件

1. 下载dex2jar并解压​​
2. 进入到你解压后的dex2jar文件夹下(根据你的实际情况文件夹位置不一样),如:

cd Downloads/dex2jar-2.0

3. 把classes.dex文件复制到解压后的dex2jar文件夹下,终端执行命令sh d2j-dex2jar.sh classes.dex

sh d2j-dex2jar.sh classes.dex

$ sudo chmod +x d2j_invoke.sh

$ sudo chmod +x d2j-jar2dex.sh

dex2jar成功

3. 执行完毕后,会在文件夹下生成一个.jar文件,里面就是java源码

生成的.jar文件

第三步:使用JD-GUI软件查看jar包下的java源码

1.下载并安装jd-gui​​
2. 打开安装好的JD-GUI,直接把第二步生成的.jar文件拖进去,就能看到反编译出来的java源码了

打开JD-GUI

把jar包拖进去就可以看到java源码了

标签:dex,反编译,文件,jar,mac,文件夹,apktool,Android
From: https://blog.51cto.com/u_15907753/5926391

相关文章

  • Android 轻量级存储方案的前世今生【SharedPreferences、MMKV、Jetpack DataStore】
    背景对于Android轻量级存储方案,有大多数人都很熟悉的SharedPreferences;也有基于mmap的高性能组件MMKV,底层序列化/反序列化使用protobuf实现,性能高,稳定性强;还有Jetp......
  • 基于Android的校园二手闲置物品交易系统设计与实现
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • Android插件化动态加载APK
    什么是插件化动态加载apk?支付宝是万能的,既可以淘票票看电影,又可以买车票,还可以开共享单车,这些都是支付宝的开发人员开发维护的么?显然不是,那么他是怎么做到的呢?是使用了动态......
  • android webview设置自适应任意大小的pc网页
    1.Android:WebView如何设定支持缩放:需要对WebView和WebSettings做一下设定2.WebSettingswebSettings=view.getSettings();3.webSettings.setJavaScriptEnabled(......
  • Android截屏截图的几种方法总结
    Android截屏Android截屏的原理:获取具体需要截屏的区域的Bitmap,然后绘制在画布上,保存为图片后进行分享或者其它用途一、Activity截屏1、截Activity界面(包含空白的状态栏)/......
  • UVCCamera && AndroidUSBCamera示例运行错误的解决办法
    Android设备USB摄像头框架,主要都是基于UVCCamera(github:​​https://github.com/saki4510t/UVCCamera​​​)在此之上,AndroidUSBCamera最新3.x版本支持了多摄像头的使用。......
  • Android13.0 PackageManagerService 的重要改变(package服务的获取)
    PackageManagerService不再extendsIPackageManager.Stub ——> 改为由抽象类IPackageManagerBaseextendsIPackageManager.Stub不再以pkms为基础类addService"p......
  • Android GestureDetector
    之前一直不知道这个类,在Android就以为只有鼠标的down和up事件,原来android为了增加用户体验,新增了GestureDetector类,也就是手势识别类,感觉就是将手指触摸屏幕的touch事件更加......
  • android调试工具DDMS
       DDMS全称DalvikDebugMonitorService.DDMS为IDE和emultor及真正的android设备架起来了一座桥梁,Android DDMS将捕捉到终端的ID,并通过adb建立调试器,从而实现发送指......
  • Android 装载器---重启装载器
    在使用initLoader()方法时,如果指定ID的装载器存在,就使用这个既存的装载器,否则会创建一个新的。但是有些时候你会想要废弃旧的数据并重启装载器。你可以使用restartLoader(......