论坛首页 开源情报交流区 阅读主题

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

409 浏览 7 回复
#1 楼主 2026-06-01 21:08:48
直接关闭指定代码区域的优化不就可以了吗?

#pragma optimize( "", off )
  你不需要优化的代码
#pragma optimize( "", on)

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-289100.htm
#2 2026-06-01 21:08:48
Mxixihaha


直接关闭指定代码区域的优化不就可以了吗?

#pragma optimize( "", off )
你不需要优化的代码
#pragma optimize( " ...

可能也是一种方案。但是确实没这么没试过。另外这个优化和编译器比较相关。可能不同编译器表现不一样。因为我之前尝试换个地方就好了,所以也没有再过多纠结。我看到有人应该是用asm 汇编 去处理了这里,这种方式应该都不怕编译器影响。
#3 2026-06-01 21:08:48
Mxixihaha


直接关闭指定代码区域的优化不就可以了吗?

#pragma optimize( "", off )
你不需要优化的代码
#pragma optimize( " ...

反正 问题定位了。怎么改都可以。
#4 2026-06-01 21:08:48
还是不行 按照上面的代码注释掉了 用vs2010编译了  替换进去还是软件跑不起来
#5 2026-06-01 21:08:48
Cr_Ring

还是不行 按照上面的代码注释掉了 用vs2010编译了 替换进去还是软件跑不起来

原理都讲得比较清楚了。自己对比一下看下编译器是不是有没有替换的的CALL REG类型的。而是优化成别的指令了。这个没什么很复杂的地方。
#6 2026-06-01 21:08:48
IamHuskar

原理都讲得比较清楚了。自己对比一下看下编译器是不是有没有替换的的CALL REG类型的。而是优化成别的指令了。这个没什么很复杂的地方。
就是我这边用vs2010编译出来了 然后也替换了 然后把优化都去掉了 在就是按照大佬你上面的代码注释了   只虚拟代码能跑 但是随便多加一个选项就崩了  被加密程序直接提示SEH异常  跑不起来 是这样的情况
#7 2026-06-01 21:08:48
现在是这样 我按照大佬你的教程做了现在他是call eax这样但是 eax的值是一个空地址 然后导致被加密程序崩溃了这个不知道是为什么 希望大佬给点建议
#8 2026-06-01 21:08:48
Cr_Ring


现在是这样 我按照大佬你的教程做了现在他是call eax这样但是 eax的值是一个空地址 然后导致被加密程序崩溃了这个不知道是为什么 希望大佬给点建议

看起来还是有些没有替换成功。IntelFunction::ReadFromBuffer 一块块逻辑看吧。没啥好办法。

请登录后参与讨论

立即登录 注册账号