首页
社区
课程
招聘
[讨论]我这样简单加密,安全性有多少?[VC 内联汇编]
发表于: 2007-9-27 13:15 4815

[讨论]我这样简单加密,安全性有多少?[VC 内联汇编]

2007-9-27 13:15
4815
这段时间给公司做了一套软件,要发布的时候,被公司告知要写加密程序,因为对这个领域不数太了解,我就用序列号验证的方法在程序中做了简单的验证,其中的加了一点花指令(初级的)。下面的代码是在程序启动时做的验证方法,我帖出来,大家帮吗看看这样做可不可以,还有没更好的方法,因为都是初级的,大家多指教:

char* msg = NULL;
__asm{
lea eax, DWORD PTR [errormsgok]
mov [msg],eax
}

// 函数调用,返回代码直接写入eax
TestKey(); // 该函数在另外一个DLL中,主要做序列号验证

__asm{
push eax
cmp eax, 0x0
// 注册跳转
jz normal
// 未注册跳转
lea eax, DWORD PTR [errormsgerr]
mov [msg],eax
jnz abnormal
// 以下防止一般的反汇编,写入花指令
_emit 0Ebh
// 以下防止一般的反汇编程序查找字符串引用
errormsgok: // 字符串: "OK!"
_emit 0x4f
_emit 0x4b
_emit 0x21
_emit 0x00
errormsgerr: // 字符串:"未注册用户!"
_emit 0xCE
_emit 0xB4
_emit 0xD7
_emit 0xA2
_emit 0xB2
_emit 0xE1
_emit 0xD3
_emit 0xC3
_emit 0xBB
_emit 0xA7
_emit 0xA3
_emit 0xA1
_emit 0x00
}

abnormal:
// 平衡堆栈
__asm{
pop eax
}

AfxMessageBox(msg);
return FALSE;
normal:
// 平衡堆栈
__asm{
pop eax
}
AfxMessageBox(msg);


弹出对话框引用的字符串是直接写在程序的代码段的。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 47147
活跃值: (20405)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
好像没什么效果。
你可以设计一套好的验证结构,加一些密码学的算法。
整个验证过程用VM处理一下(http://bbs.pediy.com/showthread.php?t=49979
2007-9-27 19:40
0
雪    币: 229
活跃值: (56)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
谢谢,我只在序列号验证用了MD5,因为验证算法是在另外一个dll中,我对如何在程序中设计一套好的算法调用验证算法经验不足
2007-9-28 09:53
0
雪    币: 148
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
还好比我强,我连你这个都看不明白
2007-9-28 10:51
0
雪    币: 313
活跃值: (14)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
5
软件算法最好不要用MD5,因为它要明文比较。很容易找到关键点,而且也很容易写出注册机,
偶破了好几个md5算法的软件,思路基本都一样,在以前的注册机基础上,1分多钟就可以写出注册机。建议用RSA等非对称算法。
2007-9-28 19:12
0
游客
登录 | 注册 方可回帖
返回
//