C++源码暂时还未完全破译,指令集部分还需要一些时间,写了个python脚本来读取它的数据文件,可以得到一些结果。注:数据文件可以在apk的assets下面找到,方法的i会在从java进入vmp时作为参数,用jadx解一下就知道。使用例:
from
read_vmp
import
VDFile
pathlib
Path
with
open
(r
'dsnapk0000.vd'
,
'rb'
) as vdfp:
vdf
=
VDFile(vdfp)
meth
vdf.get_method_entry(
33554465
)
print
(meth.info)
(meth.info.prototype)
(meth.info.prototype.param_types)
'''
结果:
<MethodInfo name=b'intercept', cls_name=b'L\xe7\x8f\x82\xe5\x87\xbd\xe7\xad\x99/\xe6\xab\xbc\xe8\x9e\x89\xe5\xbd\xac\xe5\xbd\x86/\xe4\xba\x8f\xe9\x9b\x84\xe9\x96\x8b\xe9\x82\xa0\xe7\x85\xb1\xe5\x98\x82\xe5\x92\x94\xe5\xa8\xa1\xe8\x91\x98\xe6\x88\xad/\xe6\xba\x87\xe5\xb9\x9e\xe8\x94\x9c\xe8\xbb\xbe\xe8\x85\xab\xe8\xa8\xb4/\xe4\xba\x8f\xe9\x9b\x84\xe9\x96\x8b\xe9\x82\xa0\xe7\x85\xb1\xe5\x98\x82\xe5\x92\x94\xe5\xa8\xa1\xe8\x91\x98\xe6\x88\xad/\xe5\xbd\x90\xe5\x8f\x90\xe5\x87\xb4\xe7\x80\xb1\xe7\xa0\xb0\xe6\xbc\x86\xe6\x91\xaf;'>
<MethodPrototype param_sig=b'L', return_type=b'L\xe9\x85\xbd\xe7\xa2\xb6\xe7\x9d\x83\xe6\x88\x89\xe4\xbe\xbd\xe8\x98\x84\xe6\xbc\x9d/\xe5\x89\x98\xe8\xb4\x91\xe8\xa5\x8a\xe5\x83\x98\xe8\xb1\x86\xe9\x84\xaf\xe7\xa1\xa1\xe8\x9c\x95\xe5\x91\xb7\xe5\x84\x83;'>
<MethodParamTypeList [b'L\xe9\x85\xbd\xe7\xa2\xb6\xe7\x9d\x83\xe6\x88\x89\xe4\xbe\xbd\xe8\x98\x84\xe6\xbc\x9d/\xe5\x8b\xa7\xe6\xb9\x90\xe7\xb4\xba\xe9\x94\x91\xe8\xb0\x92\xe8\x80\xa8\xe7\x87\xb6\xe8\xb1\x9b$\xe6\xab\xbc\xe8\x9e\x89\xe5\xbd\xac\xe5\xbd\x86;']>
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
导出来一段“汇编”然后用已知的指令人肉解了一下...
74(72) 10 39 02 04 00 0a(0c) 00 strcr.obj stack[0] 68(6e) 10 1e 02 00 00 calldyn1 method#0x021e stack[0:] 0a(0c) 01 strcr.obj stack[1] 68(6e) 10 4f 02 01 00 calldyn1 method#0x024f stack[1:] 0a(0c) 01 strcr.obj stack[1] 68(6e) 10 cd 00 01 00 calldyn1 method#0x00cd stack[1:] 0a(0c) 01 strcr.obj stack[1] 5d(5b) 31 30 00 68(6e) 10 20 02 00 00 calldyn1 method#0x0220 stack[0:] 0a(0c) 01 strcr.obj stack[1] 1c(1a) 02 89 00 68(6e) 20 56 00 12 00 calldyn1 method#0x0056 stack[2:] 0c(0a) 01 strcr.pod32 stack[1] 3e(38) 01 07 00 jnu 0x01 0x0007(lab_1) 76(70) 20 f5 01 03 00 0a(0c) 00 strcr.obj stack[0] 2e(28) 11 jmp +0x11(lab_2) lab_1: 68(6e) 10 20 02 00 00 calldyn1 method#0x0220 stack[0:] 0a(0c) 01 strcr.obj stack[1] 1c(1a) 02 47 02 68(6e) 20 56 00 12 00 calldyn1 method#0x0056 stack[2:] 0c(0a) 01 strcr.pod32 stack[1] 3e(38) 01 06 00 76(70) 20 f3 01 03 00 0a(0c) 00 strcr.obj stack[0] lab_2: 74(72) 20 3b 02 04 00 0a(0c) 04 strcr.obj stack[4] 17(11) 04 ret stack[4]
有模有样的,很汇编
感觉这玩意应该能想办法转化成smali的样子...