共计 1157 个字符,预计需要花费 3 分钟才能阅读完成。
一、指标
明天的指标是某生鲜 App 的签名 paramsMD5,抓个包先:
TIP: 陈腐热乎的 1.4.5
二、步骤
老规矩,上 jadx
纳尼 …… 这个 qihoo 很眼生,在 Windows 平台下是老熟人了,没想到当初混挪动端了,它又冒出来了。
怎么办?手脱是万万不行的,这辈子都不想手脱,还好咱们有葫芦娃
https://github.com/hluwa/FRIDA-DEXDump
- 默念一声 ” 我想脱个壳 ”。
- 启动 APP。
- 启动 frida-server。
- python main.py。
- 默数三秒,脱好了。
一堆 Dex 怎么找
脱完的 Apk 在哪里?兄弟,你太 Native 了,脱完就是 Apk 的那不是葫芦娃,那是金刚葫芦娃。
面对这一堆 Dex,咱们该怎么动手?
间接搜 Dex 文件?
这是相当不靠谱的,Dex 是两头文件,不是源码。
用 jadx 一个一个关上去找?
有毅力,先把文件排个序,而后从大到小去一个一个用 jadx 关上。
还是 jadx,不过这次是批量反编译
import os, sys
# python3.7 merge_dex.py ./file/ livedex
if __name__ == "__main__":
if len(sys.argv) < 3 :
print("start error")
sys.exit()
print(sys.argv[1], sys.argv[2])
path = sys.argv[1] #文件夹目录
files= os.listdir(path) #失去文件夹下的所有文件名称
s = []
for file in files: #遍历文件夹
if file.find("dex") > 0: ## 查找 dex 文件
sh = '/Users/fenfei/Desktop/tool/jadx-1.2.0/bin/jadx -j 1 -r -d' + sys.argv[2] + " " + path + file
print(sh)
os.system(sh)
跑一遍,这下才有意思,看到了相熟的 java 代码
好了,这次从整个文件夹搜寻 paramsMD5
find . -path '*/.svn*' -prune -o -type f -name "*.*" | xargs grep -nH -E -i "paramsMD5"
./com/rt/market/fresh/a/g.java:214: this.a.put("paramsMD5", b(a2));
./com/rt/market/fresh/common/j.java:127: aVar.put("paramsMD5", com.rt.market.fresh.a.g.b(a2));
后果很漂亮
再进入签名函数一看:
好吧,基本就没有再挂上可爱的 Frida 的兴致……
三、总结
办法要找,然而脏活累活也要干,切实没方法,一个一个文件关上去找也是能承受的,反正是带薪 **
有钱没欲望才是低欲望,咱们这种没钱没欲望的叫面对现实
正文完