首页
论坛
专栏
课程

[调试逆向] [虚拟机保护] [原创]VMP3.2授权分析

2018-10-24 11:27 16099

[调试逆向] [虚拟机保护] [原创]VMP3.2授权分析

2018-10-24 11:27
16099
打赏 + 3.00
打赏次数 2 金额 + 3.00
 
赞赏  雪衫   +2.00 2018/10/25
赞赏  demoscene   +1.00 2018/10/24
最新回复 (74)
Priest Dove 2019-1-2 22:07
51
0
那如果是一个DLL加了VMP怎么处理啊?
babalove 2019-1-2 23:46
52
0
学习了 
Rookietp 2019-1-12 18:02
53
0
你好 楼主,我试了无数个的堆栈为啥就是找不到KEY.
老道 2019-1-14 22:53
54
0
厉害了!
cyclent 2019-3-26 09:11
55
0
mark
sinkay 2019-4-14 19:12
57
0
多谢楼主分享
老道 2019-4-17 09:02
58
0
NBPlus+兰博基尼版
wx_飞腾小子 2019-4-17 20:14
59
0
流弊!!!
王h和 2019-4-23 22:04
60
0
好像你加壳的时候 虚拟机个数定的不少吧?
我手动分析 发现很多个出口啊。难道VMP3.2 的 都这样么。
小调调 2019-4-24 23:42
61
0
厉害,非常厉害
王h和 2019-5-11 21:54
62
0
必须先拥有一份序列号从中获取product code 和usr data
不是必须的。pcode 是可以计算的
麻烦点而已。
王h和 2019-5-14 21:40
63
0
你好,能否提供你的VMP加壳 软件给我研究下?
我从网上下载的VMP3.2加壳程序 加密后虚拟机 与你的不同。
我的是 VMProtect_Ultimate_v3.2.0_x32_x64_Build_976_Retail_Licensed。
比如: 你 里面的虚拟机 跳转到 handle 是 jmp R32 或者 push XXX retn,你的虚拟机指令条数非常多。
我加密后 还是 retn CONST的形式 与低版本一样,而且是仅有一个虚拟机。
xieziwang 2019-6-13 18:18
64
0
3000元详细给我讲讲方法可以吗
gueijiao 2019-7-26 08:08
66
0
感谢楼主分享!!!楼主威武
成啊水 2019-8-5 02:04
67
0
厉害了
最后于 2019-8-7 03:41 被成啊水编辑 ,原因:
lordrings 2019-8-11 04:31
68
0
谢谢楼主分享这么棒的文章!  我在学习过程中碰到一个问题, 希望楼主能够解答.
我在获取RSA-N的数据的过程中, 通过注入 rsa-n.dll 来对内存中加密的N数据进行解密, 这部操作我怎么都不成功, 解密的数据格式都是错误的, 而且每次都不一样.
我的测试环境:  [win7 64bit]
我的步骤:
1. launch -n testapp.vmp.exe
2. 在序列号输入框内粘贴正确的license( 来自下载的附件license/serial.txt)
3. 弹出第一个对话框(提示Attach the process, breakpoint at key_ptr.) 
4.打开ollyICE, attach 进程, 然后继续运行. 点击关闭对话框.
5.弹出RSA-N at: %08X, key address at: %08X 对话框, 根据key的地址在ollyICE里面找到该内存, 然后修改前两个字节的内容为 0x01
6. 关闭对话框, 程序结束. 
rsa-n.bn文件已经生成, 但是内容不对, 也不是80 00 开头.

请问中间那个步骤出错了??
我自己有疑问的地方:
楼主文章中提到:
“RSA-N 的获取
对 RtlAllocateHeap 下断点将KEY 修改为 0x01,第二次断下后使用固定key 对RSA-N 进行解密”
是不是在第一次进入到RtlAllocateHeap的HOOK函数的时候就要把key修改为0x01, 但是这个时候怎么找到Key的地址呢? 
HighHand 11 2019-8-12 08:46
69
0
lordrings 谢谢楼主分享这么棒的文章! 我在学习过程中碰到一个问题, 希望楼主能够解答. 我在获取RSA-N的数据的过程中, 通过注入 rsa-n.dll 来对内存中加密的N数据进行解密, 这部操作我怎么都不 ...
 Key大小为20字节, 只修改前两个字节不够吧
lordrings 2019-8-12 11:22
70
0
HighHand Key大小为20字节, 只修改前两个字节不够吧
方法是对的吗? 我刚刚试了把整个key的内容都修改为0x01也是不行. 

得到的rsa-n.bn
-------------------------------------------
7401 02e0 3cfe b06c b315 998d b844 e5cc
0d87 6c5d b11c 26e3 6572 ccaf c2af 6d4a
63da b151 3981 506d 5802 c901 8063 5414
3a04 a305 365e be43 f56e c790 a076 27f9
f7b8 50b5 c280 7a12 123f 381d 98bd e7cb
ba92 2b58 593f 332d 1eb8 474d 0f76 bc66
df25 9214 5fdf c440 fed5 f204 5064 2989
b41b 04ea d294 b960 6b61 0ab5 9212 bf00
ae99 aa73 5495 68ed 020c f8e9 40ed 98d7
6cfc 5e53 bdb4 c573 036d 8998 cdab 2c1b
240c 78a6 eceb cc4a f071 ffe8 da2a 8e3e
5b5f 4f9e bd48 cfdc 80a7 b50c 536a 36bf
ba2a 5dc4 bec7 61c4 6ac0 293d 7bd5 c69a
a977 0804 d78a fde3 af2c df08 5d85 e53b
c4bc ffe4 ecc5 349c b779 3b36 b279 3bc2
9bed 63c6 22e3 4934 fe76 6180 92f6 0cb7
f7ad 
HighHand 11 2019-8-12 13:06
71
0
ras-n.bn 生成过程
1. launch -n testapp.vmp.exe 
        第二个对话框会提示 key 地址,记录下(key address at: 0019F91C
2. 再次运行,launch -n testapp.vmp.exe 
       在第一个对话下,使用OD attach 附加进程,并在key地址(0019F91C)+ 0x10 处下硬件写入断点(dword),
3. 继续运行. 点击关闭对话框. 
       在硬件断点断下后,修改key (0019F91C) 为 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01, 大小为 20 字节
4.继续运行, 弹出RSA-N at: %08X, key address at: %08X 对话框, 关闭对话框
5. 程序结束. 查看目录下的 ras-n.bn

最后于 2019-8-12 13:11 被HighHand编辑 ,原因: 硬件写入断点(dword),除主线程外其他线程挂起
lordrings 2019-8-12 15:11
72
0
感谢楼主, 这个例子已经可以正常运行.

另外, 我尝试去Hook另外一个vmp加壳的Dll的时候 , 在第二次进入Hook的时候find_key失败.
请问:

1. 这个方法支持Dll吗?  支持哪些版本的vmp?
2. 怎么查看Dll使用哪个版本的vmp加壳的?
最后于 2019-8-12 15:13 被lordrings编辑 ,原因:
wendax 2019-9-19 21:00
73
0
老哥 回来打ctf啊,没有你和风神 看雪的ctf一直都是不完整的
icoon 2019-9-25 22:55
74
0
HighHand ras-n.bn 生成过程1. launch -n testapp.vmp.exe         第二个对话 ...
楼主,小菜我也测试了下,在key地址(0019F91C)+ 0x10 处下硬件写入断点(dword)断不下是什么原因呢,另外生产的ras-n.bn一定是8000开头的么?
wx_追忆_390 2天前
75
0
为什么我用gen.exe这个Decrypt error:RSA-N or version incorrect   源码是否要修改哪里?
最后于 2天前 被wx_追忆_390编辑 ,原因:
游客
登录 | 注册 方可回帖
返回