美文网首页
【逆向安全】-工具(三)Jadx & Apktool

【逆向安全】-工具(三)Jadx & Apktool

作者: Stan_Z | 来源:发表于2024-08-13 19:17 被阅读0次

一、Jadx

1.1 介绍

GitHub - skylot/jadx: Dex to Java decompiler
jadx是图形化逆向工具,可以直接打开apk、aar、dex、jar等文件,通常用于做java代码静态分析。

1.2 使用

  • 1 全局搜索。如果是当前文件搜索:command+f
  • 2 前进或后退操作。
  • 3 反混淆。 对于开启ProGuard或R8的工程,可以通过点击该按钮自动替换相关混淆的字符串
  • 4 设置。打开Show inconsistent code开关,可以查看反编译失败的方法实现,如果不行,配合底部tab的smali、simple来综合看。
  • 5 寻找调用者。
  • 6 生成frida函数代码并复制。

1.3 常用命令

反编译apk:jadx -d output <可选参数项> xxx.apk

常用的可选参数项:

  • --comments-level debug :设置注释级别为debug,以便在反编译的代码中包含详细的调试信息
  • --show-bad-code:启用此选项以显示有问题的代码(bad code),并在反编译的代码中标记这些问题区域。

二、apktool

2.1 介绍

GitHub - iBotPeaches/Apktool: A tool for reverse engineering Android apk files
apktool是仅对apk进行逆向的命令行工具,仅支持反编译为smali文件格式,该工具目前通常用于重打包。

2.2 使用

1)反编译为smali工程

apktool d xxx.apk

2)静态smali代码阅读
vscode 插件smalise,支持语法高亮和符号索引,可以比较方便的阅读samli代码。
3)重打包
① 修改完smali代码后,在当前工作目录执行如下命令,会在./dist目录生成对应的apk文件

apktool b . 

② 重签名
没有秘钥生成秘钥

keytool -genkeypair -v -keystore <xxx.keystore> -keyalg RSA -keysize 2048 -validity 10000 -alias <name-alias>

输入密钥库口令: xxx
再次输入新口令: xxx
您的名字与姓氏是什么?
  [Unknown]:  xx
您的组织单位名称是什么?
  [Unknown]:  xx
您的组织名称是什么?
  [Unknown]:  xx
您所在的城市或区域名称是什么?
  [Unknown]:  xx
您所在的省/市/自治区名称是什么?
  [Unknown]:  xx
该单位的双字母国家/地区代码是什么?
  [Unknown]:  xx
CN=xxx, OU=xx, O=xx, L=xx ST=xx, C=xx是否正确?
  [否]: y (注意:这里是y 不是yes,如果填yes会再重复一遍让你输入)

用秘钥签名:

apksigner sign --ks <xxx.keystore> --ks-key-alias <name-alias> --ks-pass pass:<password> dist/xxx.apk

验证签名:

jarsigner -verify -verbose -certs xxx.apk

三、其他工具

dex2jar:一款命令行工具包,支持dex,smali,jar之间的互相转换。
smali/baksmali: 是dalvik (Android的Java VM实现)使用的索引格式的汇编/反汇编器。通常使用场景是将odex转为dex。

相关文章

网友评论

      本文标题:【逆向安全】-工具(三)Jadx & Apktool

      本文链接:https://www.haomeiwen.com/subject/uwujkjtx.html