首页
社区
课程
招聘
[分享]VMProtect 与 ASProtect 在VC中的SDK编程.
发表于: 2007-1-5 17:26 29145

[分享]VMProtect 与 ASProtect 在VC中的SDK编程.

2007-1-5 17:26
29145

最近想用VMProtect和ASProtect 的SDK加密一个程序,结果搞了半天没搞成,网上没看到在VC中如何使用VMProtect的SDK加密,于是琢磨了一下,总算成功了,最后有一点点心得,与大家共享,免得还有人跟我一样走弯路。
   其实VMProtect和ASProtect的SDK编程都差不多,都是在编程时在语句里面插入一个标记(Marker),然后在加壳时,加壳程序就会认出这些标记,并在有标记的地方进行保护。 我觉得这就是最基本的所谓加壳程序SDK编程吧。
   1. VMProtect
    新版的VMProtect没看到好用的,所以这里用的VMProtect v1.2。 (有新的好用的请说一声).  编译环境 VS.Net 2003. 主要参考了文章. VMProtect SDK+ASProtect SDK混合编程[代码演示]  作 者: Anskya  链 接: http://bbs.pediy.com/showthread.php?threadid=20317

   1.1 保护内部函数
    Delphi需要设置Map文件,那VS.Net 2003也需要设置一下,以便产生Map文件,使VMProtect能够识别内部函数,如果没Map文件,VMProtect只能识别导出函数,到时就要自己加函数的地址了.
   VS.Net 2003中,打开 "项目 -> project1属性(假设项目名为project1) -> 链接器 -> 调试 -> 生成映射文件", 改成 "是(/MAP)",这样生成程序时会同时生成project1.map文件。  将project1.exe与project1.map 都拷贝到VMProtect程序夹,用VMProtect加密时,添加新的函数时能够列出很多内部函数,这时只需要选择想加密的内部函数就行了。  如果没Map,只有个输入函数地址的输入筐,没有内部函数列表。
   这里可以省去有些朋友为了加密某个函数,还要用Ollydbg分析程序,找到函数入口地址,然后输入到VMProtect里面来保护的麻烦。
      
   1.2 保护任意位置代码
    在Anskya和那个俄国作者的主页上都只说了Delphi在程序中加入SDK标记。在Delphi 中的标记模式为:

asm                             
  db $EB,$10,'VMProtect begin',0       //标记开始处.
end;
//想保护的程序代码
asm
  db $EB,$0E,'VMProtect end',0	       //标记结束处.
end;
#include "include\aspr.h"  
 VOID Test   
 {  
 USER_POLYBUFFER  
 // some code  
 }  
do {
  USER_POLYBUFFER 
  // some code  
} while();
   // some code  
 #include "include\aspr.h"  
 MessageBox(0,"Begin","",0);  
 #include "include\CppEnvelopeCheck.inc"  //可以在任何位置插入这一句话.
 MessageBox(0,"End","",0);  
 BOOL EnvelopeCheck()   //这个函数放在程序前面就行了。
 {  
 #include "include\CppEnvelopeCheckFunc.inc"   
 }  

 if ( !EnvelopeCheck() ) // .. 邪恶的事情   

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (15)
雪    币: 245
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
哈,多谢老大,搞了个精华,呵呵。
有动力啊,把帖子内的英文大小写都规范了一下,看起来好点。

不知道有没有比较适宜的混合插入方式,强度又高,又不乱,有人教一下没?

最后问一个,我用的ASProtect SKE 2.2 Release build 0425在xp下生成的key能注册,但是windows2003的key is not valid,怎么回事啊?

两个比较弱的问题,帮忙回答一下阿。 谢了。
2007-1-5 17:48
0
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
支持!!!!!!
2007-1-5 18:07
0
雪    币: 238
活跃值: (12)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
4
这么好的文章,支持并学习!
2007-1-5 19:30
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
好文章,收藏!
2007-1-6 16:02
0
雪    币: 105
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
最初由 glucose 发布
哈,多谢老大,搞了个精华,呵呵。
有动力啊,把帖子内的英文大小写都规范了一下,看起来好点。

不知道有没有比较适宜的混合插入方式,强度又高,又不乱,有人教一下没?

........


硬件id不一样..~ 我也有同样的问题..注册机算出来的xp系统能用.03系统就无效了.~ 最后看见.注册机显示的硬件id都不一样..~
2007-1-6 19:02
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
最初由 rokeys 发布
硬件id不一样..~ 我也有同样的问题..注册机算出来的xp系统能用.03系统就无效了.~ 最后看见.注册机显示的硬件id都不一样..~


借楼主的地方问一下,At the moment we use HDD factory number via S.M.A.R.T. interface(http://www.aspack.com/forums/index.php?showtopic=94),这是Asprotect论坛的FAQ里admin对硬件ID的说法,但其实有些电脑从新做过系统后硬件ID都会变。我想问一下,这里说的S.M.A.R.T. interface是什么?
2007-1-7 15:59
0
雪    币: 245
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
硬盘有个S.M.A.R.T.接口。 我那win2003的是disabled的,还以为是这个问题,但是Enable也没用。 我的winxp和win2003不是一台机子。
估计注册机不适合win2003吧。
2007-1-10 13:30
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
9
好文,支持!
2007-1-10 14:42
0
雪    币: 214
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
10
mark!
2007-1-31 04:35
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
11
这么好的贴竟然才看到,顶。。。。。。。
2007-4-13 23:42
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习,支持搂住!!
2007-4-14 06:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
看了半天,不懂~~一点不懂~~文章估计是好,但是我不懂~郁闷ing.....
2007-5-27 11:23
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
VMProtec的sdk或者VMProtect的安装版那里下载?
2007-5-31 20:44
0
雪    币: 202
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
2007-5-31 22:37
0
雪    币: 197
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
学习!学习!
2007-7-13 16:37
0
游客
登录 | 注册 方可回帖
返回
//