Kavanoz(土耳其语中意为“罐子”)是一款用于静态解包常见 Android 银行木马的工具。你是否曾想过在不运行 Android 模拟器的情况下从加壳恶意软件中获取 payload?我也没想过 :) 但这里还是有一个工具。

pip install kavanoz
要从源码安装,请克隆仓库并使用 -e 进行可编辑安装。这意味着如果你编辑或向项目添加新插件,无需重新安装即可生效。
git clone https://github.com/eybisi/kavanoz.git
cd kavanoz
pip install -e .
通过命令行
kavanoz /tmp/filepath
你可以使用 -vvv 参数输出详细日志。(对调试插件很有用)
作为 Python 库使用
from kavanoz.core import Kavanoz
from kavanoz import utils
utils.set_log("DEBUG")
k = Kavanoz(apk_path="tests/test_apk/coper.apk")
for plugin_result in k.get_plugin_results():
if plugin_result["status"] == "success":
print("Unpacked")
print(plugin_result)
break
请确保以可编辑模式(使用 -e)安装 kavanoz。要添加新插件,只需在 loader 文件夹中创建新文件。继承 unpack_plugin.py 文件中的 Unpacker 类。使用你的实现定义 start_decrypt 函数。
def start_decrypt(self, apk_object: APK, dexes: "list[DEX]"):
添加以下函数以从插件中提前退出。
def lazy_check(self,apk_object:APK, dexes: "list[DEX]"):
如果提取成功,请将 self.decrypted_payload_path 设置为提取出的文件路径。 你可以使用 unpacker 类中的辅助函数:
在提交 PR 之前,请务必运行 python -m unittest。要获取测试 apk 文件,请使用 git lfs pull 命令。
dex.get_class(smali_annotation_of_class) 获取类。self.apk_object.get_files() 获取文件。application = self.apk_object.get_attribute_value("application", "name") 获取 manifest 文件中定义的 Application 类。感谢 apkdetect.com 提供独特的样本供研究使用。