首页
社区
课程
招聘
[原创] vmp3.5.1 win32 runtime.inc 编译替换注意
发表于: 2025-11-17 09:16 3305

[原创] vmp3.5.1 win32 runtime.inc 编译替换注意

2025-11-17 09:16
3305

之前问过几次,没什么人解答,后来还是自己抽空研究了一下,win32 runtime编译问题。

有不少人按照教程编译,无论是vs2010 vs2008 ,win32runtime编译,生成Inc文件后,加密出来的vmp程序都无法跑。

我之前也提问过,当时时间太仓促 ,没空研究一下。最近回头又碰到了一次,还是自己抽空看了一下。

实际上确实是编译优化的影响。 (当然按文章修改后,还是用vs2010编译 release 32 。其他的我没试过是否OK)

在loader.cc中 有连续的两个 tNtQueryInformationProcess

即使在vs2010/2008下,由于优化被编译成了

mov  eax,fake_func_addr

mov [ebp+xxx] ,eax

....

call  [ebp+xxx]   这样的形式。

这部分runtime地址在最后的代码中是需要重新填充真实的地址的。


在intel.cc  

IntelFunction::ReadFromBuffer

中 有对这个call 进行替换。

vmp期望遇到  

MOV EAX,0XFACE_ID

CALL EAX 这种形式


[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

最后于 2025-11-17 09:29 被IamHuskar编辑 ,原因:
收藏
免费 4
支持
分享
最新回复 (3)
雪    币: 5935
活跃值: (6020)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
直接关闭指定代码区域的优化不就可以了吗?

#pragma optimize( "", off )
  你不需要优化的代码
#pragma optimize( "", on)
2025-11-20 08:53
0
雪    币: 1277
活跃值: (6748)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
3
Mxixihaha 直接关闭指定代码区域的优化不就可以了吗? #pragma optimize( "", off ) 你不需要优化的代码 #pragma optimize( " ...
可能也是一种方案。但是确实没这么没试过。另外这个优化和编译器比较相关。可能不同编译器表现不一样。因为我之前尝试换个地方就好了,所以也没有再过多纠结。我看到有人应该是用asm 汇编 去处理了这里,这种方式应该都不怕编译器影响。
2025-11-21 09:37
0
雪    币: 1277
活跃值: (6748)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
4
Mxixihaha 直接关闭指定代码区域的优化不就可以了吗? #pragma optimize( "", off ) 你不需要优化的代码 #pragma optimize( " ...
反正 问题定位了。怎么改都可以。
2025-11-21 09:43
0
游客
登录 | 注册 方可回帖
返回