好友
阅读权限30
听众
最后登录1970-1-1
|
不想导入lib库以及导入vmp.h,就是懒,然后就有了下面这个方法,加密方式,其实就两步,第一步复制粘贴asm,第二步拖到替换工具
易语言程序内置VMP加密标记的方法:
VMProtect.易的SDK
置入代码 ({ 235, 16, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 98, 101, 103, 105, 110, 0 }) ' VMP保护开始标志
'关键代码
置入代码 ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) ' VMP保护结束标志
翻译成16进制则:
EB 10 56 4D 50 72 6F 74 65 63 74 20 62 65 67 69 6E 00 size:18 "VMProtect begin"
EB 0E 56 4D 50 72 6F 74 65 63 74 20 65 6E 64 00 16 size:16 "VMProtect end"
那么C++由于没有置入代码功能,所以我们得另想方式将这18+16个字节的机器猫写入到函数内,首先将C++的随机基质给关闭掉,然后用asm写18+16个NOP,代码如下
[C++] 纯文本查看 复制代码 int main()
{
_asm
{
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
}
MessageBox(NULL, LPCWSTR(L"C++调用E的SDK"), LPCWSTR(L"C++调用E的SDK"), NULL);
_asm
{
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
}
}
最后的话就是在OD中将18+16个字节,用vmp加密标记修改一下即可,如果说是批量的话,那也很简单,用易语言读入文件,搜索18个NOP的位置,替换之,再搜索16个NOP的位置,再替换
如果算法有难度,可以将NOP改成无意义汇编语句,如:mov eax,eax等等,搜索字节集就好
效果图:
然后希望大家集思广益,能提供一下更简便的方法,主要是不想调用lib和头文件,想直接用机器码解决问题!
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|