首页
社区
课程
招聘
[原创]研究某vmp半个月得到的一点结果
发表于: 2023-11-30 17:23 4100

[原创]研究某vmp半个月得到的一点结果

2023-11-30 17:23
4100

C++源码暂时还未完全破译,指令集部分还需要一些时间,写了个python脚本来读取它的数据文件,可以得到一些结果。
注:数据文件可以在apk的assets下面找到,方法的i会在从java进入vmp时作为参数,用jadx解一下就知道。
使用例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from read_vmp import VDFile
from pathlib import Path
 
with open(r'dsnapk0000.vd', 'rb') as vdfp:
    vdf = VDFile(vdfp)
 
meth = vdf.get_method_entry(33554465)
 
print(meth.info)
print(meth.info.prototype)
print(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期)

上传的附件:
收藏
免费 1
支持
分享
最新回复 (6)
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
注:示例中得到的名字虽然不是ascii字符串,但确实是utf-8可解码的!而且这确实是其他未被vmp保护的部分使用的类名。混淆的。
2023-11-30 20:50
0
雪    币: 3573
活跃值: (31026)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2023-12-1 09:39
1
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
感谢分享
2023-12-1 11:33
0
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5

导出来一段“汇编”然后用已知的指令人肉解了一下...

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的样子...

最后于 2023-12-1 15:14 被TsXor编辑 ,原因:
2023-12-1 15:03
0
雪    币: 1857
活跃值: (3201)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
很好,我用一分钟得到了你半个月的成果
2023-12-1 15:46
0
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
其实你可以想想你用哪个开源项目不是这样。
2023-12-1 18:39
1
游客
登录 | 注册 方可回帖
返回
//