应用
某咖啡
抓包
新买的pixel 6, 用公司网络, 设置代理后,charles 没有任务反应, 就好像代理每设置成功一样。 但是用自己的另外一个手机开热点,可以抓到请求.
问题已解决: 在连接wifi 的时候设置使用设备 MAC, 不要随机mac 就可以使用公司网络进行抓包了.
反编译.
打开 发现用了 某数字厂商的壳. 于是尝试用 frida 脱壳. 结果发现这个apk 有anti-frida. 然后 hluda-server, Strong-frida 等都过不了.
脱壳
https://github.com/LLeavesG/eBPFDexDumper
我是用的这个基于 ebpf 的 dexDumper. 对内核有一定的要求, 本人亲测 pixel 6, 官方 rom, android 14. 可正常使用并完成脱壳.
1 | ./eBPFDexDumper dump -n com.example.app -o /sdcard/dex_out |
脱壳后拖入 jadx, 发现有部分代码已经可以正常显示了. 全局搜索 sign, 定位几处可疑的地方。想要使用 frida, 但是有双进程保护,注入的时候找不到进程.
spawn 模式注入也会崩溃. 本人使用的是内核模块过 frida 检测. 但spawn 模式注入 不能先 注入 Java.perform。 要先加载脚本,等稳定后再把注入代码粘贴到hook 脚本中。否则一样闪退.
本人猜测是 init_array, 或者 jni_onload 中有 crc 检测. 但线程不但轮询检测中没有 crc 检测. 当然只能猜测.
本人使用 frida 环境
frida-server https://github.com/ultrafunkamsterdam/undetected-frida undetected_f1783
frida==17.8.3
frida-tools==14.8.1
frida hook String.getBytes 方法
1 |
|
根据堆栈,定位到 md5_crypt 函数. frida hook 该函数.
1 |
|
hook 结果如下
1 | localAESWork bytesToString(bArr2) : ��o�_��ug�� ��ŖI �P�Wbr�l|a�4; |
可以看到 先 localAESWork 再 md5_crypt, localAESWork 的结果会参数到 md5_crypt 的计算.
CryptoHelper.md5_crypt is called: i2=1 可以看到 i2 = 1 这点跟 localAESWork 的 2 是不一样的.
ida 打开. 进入 jni_onload 函数。
进入 off_4BCE0, 可以看到是个结构体, 里面存放的是 java函数名, 方法签名, native层绑定的 jni 函数.

进入 android_native_md5 函数看看,可以看到, 有大面积的 ollvm .

将整个函数丢给 chatgpt 和 gemini,这两个我喜欢混着用。 但是最近我发现 claude code 真的非常强大. 例如分析某个函数时, chatgpt 和 gemini 还在用非常含糊的语言表达时.
claude code 会用非常肯定语气告诉你. 并且十分靠谱, 这一点是我觉得 cc 远比 gpt 和 gemini 好用的地方
放个 cc 的回答.
AI 告诉我们



























































