求助:SMC动态代码加密技术

iamxiang 2007-06-29 05:51:25
有关技术文章地址:http://blog.csdn.net/orbit/archive/2007/01/29/1497457.aspx
源代码下载地址:http://blog.csdn.net/orbit/


不过以上代码是用VC写的,不知道哪位大侠能够将它转化成为VB代码?
本人将尽力转化,不过希望能够得到大家的帮助!如果哪位大侠已经完成,请邮件iamxiang@163.com!谢谢~

...全文
288 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wds 2007-08-27
  • 打赏
  • 举报
回复
1、可以在各模块调用时多次调用。 另外在调用时加上程序必须的返回参数,更改为nop程序报错。

2、键入外壳程序,检索程序完成性,之后决定运行。
iamxiang 2007-08-27
  • 打赏
  • 举报
回复
再顶一下!
iamxiang 2007-07-23
  • 打赏
  • 举报
回复
.....
嗷嗷叫的老马 2007-07-18
  • 打赏
  • 举报
回复
顶一下!高手来~
iamxiang 2007-07-18
  • 打赏
  • 举报
回复
顶一下!高手来~
cangwu_lee 2007-06-30
  • 打赏
  • 举报
回复
表示一下 已经参与
iamxiang 2007-06-30
  • 打赏
  • 举报
回复
许多软件作者喜欢将加密或注册信息验证部分的代码封装到一个函数中,在程序中这样使用:
if(CheckRegCode(szRegCode) == TRUE)
{
//注册信息正确,执行正常的功能
}
else
{
//注册信息不正确,提示错误
}
这种封装看起来使程序代码结构良好,便于代码的组织与维护,但是也为破解者提供了良机。这样的程序通过反汇编之后通常有以下结构:
push 00406070 '字符串szRegCode参数入栈
call 00401050 '调用CheckRegCode函数
test eax,eax '判断CheckRegCode返回值
je 00401029 '跳转到出错位置
' 注册信息正确,顺序执行
从上面的汇编代码可以看到,只需将执行跳转的je指令(机器码是740B)改成两个NOP(CPU空操作指令,机器码是90)就等于忽略了对 CheckRegCode函数返回值的判断,也就是说,无论这个函数返回TRUE还是FALSE,真正的功能代码都会执行,对注册码的校验就形同虚设。破解者根据指令的内存偏移地址计算出在可执行程序文件中的文件偏移位置,直接修改可执行文件就达到了破解这个功能的目的。此外,破解者还知道校验函数的位置是00401050,也就可以直接修改这个函数的代码,将函数开始部分的代码改成:
mov eax,1 ' 机器码是B801
ret ' 机器码是C3
也就是说根本不判断注册码,直接返回1(校验成功的标志),就能够使整个软件的注册码校验功能失效,软件被彻底的破解。

怎么办???
CathySun118 2007-06-29
  • 打赏
  • 举报
回复
先看看

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧