yedajiang 发表于 2008-1-2 20:39:00
哪怕不是明码对比也十分容易破解,内存跟踪器加上一点时间,容易的,当然对付菜鸟不需要加什么密,只要随意一个写文件、注册表之类的就足够了,关键是怎样写得更好的程序。当然适当保护也是需要的。黄河 发表于 2008-1-2 22:13:00
8楼所答的正确,我要的效果也只是稍稍加一下密,就是说不要一加载就可用,至于能不能破解不管,我想但是要对所有机器有效。无痕 发表于 2008-1-2 23:23:00
本帖最后由 作者 于 2008-1-2 23:27:20 编辑 <br /><br /> <p>vb的,网上搜的.没试过</p><p>MD5的VB类模块源码,可支持中文</p><p><a href="http://bbs.office-cn.net/dispbbs.asp?boardid=150&id=31806">http://bbs.office-cn.net/dispbbs.asp?boardid=150&id=31806</a></p><p><u><font color="#0000ff">MD5加密的VB类模块源码</font></u> <script src="http://blog.csdn.net/count.aspx?ID=475596&Type=Rank"></script><br/> </p><p><a href="http://blog.csdn.net/lucaslynn/articles/475596.aspx">http://blog.csdn.net/lucaslynn/articles/475596.aspx</a></p><p><u><font color="#800080">MD5加密器源码(16/32)</font></u><a href="http://download.csdn.net/source/150918"></a></p><p><a href="http://d.download.csdn.net/down/150918/dxef">http://d.download.csdn.net/down/150918/dxef</a><br/></p><p></p><h1 id="articletitle">转帖一个忘了出处的精华</h1><p><a href="http://www.testage.net/html/12/n-89412.html">http://www.testage.net/html/12/n-89412.html</a></p><p></p>cnks 发表于 2008-1-3 11:25:00
<p>11楼所说的“内存跟踪器”指的是??时间是必须要的</p><p>12楼黄河:程序不被解密更重要</p><p>13楼无痕刀:对lsp安全上来说,全部代码用lsp写有时候更安全</p>hustrys 发表于 2008-1-13 11:33:00
<p>大家看看这个是否可以,这是本人编写的,里面有一些与本注册程序无关的函数,这里不再算数删除; register_lisp<br/>; 2006.11 by emrys<br/> (defun register()<br/> (GRTEXT -2 "请输入授权码......") <br/> (setq Pass_File "C:\\Program Files\\Common Files\\Autodesk Shared\\lisp.ry")<br/> (setq fn(findfile Pass_File)) <br/> (if (= fn nil) ;创建文件<br/> (PROGN <br/> (setq fn Pass_File) <br/> (setq fh(open fn "w"))<br/> (setq str1 "Don't remove these data!!\n")<br/> (princ str1 fh) <br/> (getcode)<br/> (princ mcode fh)<br/> (princ "\n" fh)<br/> (princ sncode fh)<br/> (close fh) <br/> (read_data fn) <br/> (pwd)<br/> ) ;END PROGN<br/> (progn<br/> (read_data fn)<br/> (if (or(= dt3 nil)(/= dt2 dt3))<br/> (pwd)<br/> (progn<br/> (setq passflage 1)<br/> (princ"程序运行条件成熟 ,执行程序......")<br/> )<br/> )<br/> ) ;end progn<br/> ) ;end if</p><p> (princ )<br/> <br/> ) ;end defun</p><p>;df8888888888888888<br/>(defun pwd ()<br/> (setq dcl_id(load_dialog "dcl\\pwd.dcl"))<br/> (if (null (new_dialog "pwd" dcl_id))<br/> (exit) <br/> )<br/> (setq fn Pass_File) <br/> ;(read_data fn) <br/> (set_tile "mcode" dt1) <br/> (if (or(= dt3 nil)(/= dt2 dt3))<br/> (progn <br/> (setq dt3 "你还没有注册!请输入授权号") <br/> (setq passflage 0)<br/> )<br/> )<br/> (set_tile "password" dt3) <br/> (action_tile "password" "(GETDATApwd)(done_dialog 3) ")<br/> (action_tile "accpet" "(done_dialog 3)")<br/> (action_tile "cancel" "(done_dialog 0)")<br/> ;(setq mc(get_tile "mcode"))<br/> ;(princ" mc=")<br/> ; (princ mc)<br/> ;(setq psd(get_tile "password" ))<br/> ;(princ " psd=")<br/> ; (princ psd)<br/> ;(saveok)<br/> ;(getdata)<br/> <br/> (setq what_next(start_dialog))<br/> (cond<br/> ((= what_next 3)(SAVEOK)) <br/> ;((= what_next 1) (princ "\n dfg "))<br/> ((= what_next 0) (princ "取消运行程序 ")) )<br/> <br/> (start_dialog) <br/> (unload_dialog dcl_id) <br/> (princ) <br/>)<br/>(defun getdatapwd()<br/> (setq mc(get_tile "mcode"))<br/> (setq psd(get_tile "password" )) <br/> )<br/>(defun saveok()<br/> ;(setq psd(get_tile "password" )) <br/> (if (= dt2 psd)<br/> (progn<br/> (setq fn Pass_File) <br/> (setq fh(open fn "a"))<br/> (princ "\n" fh)<br/> (princ psd fh)<br/> (alert "注册成功!") <br/> (close fh)<br/> (setq passflage 1)<br/> (princ "注册成功!")<br/> )<br/> (progn<br/> (alert "授权号不正确!请重新输入")<br/> (setq passflage 0)<br/> (pwd)<br/> )<br/> )<br/>) <br/>(defun getcode() <br/> (setq sum(rnd 1 11)) <br/> (princ sum) <br/> (setq STRPWD " dfgg hewa wwhu ijut kops gper jfgr pznd vwek murj" ) <br/> (SETQ sdt1(STRLEN STRPWD))<br/> (SETQ k(/(+ sdt1 1)5))<br/> ;(princ sdt1)<br/> ;(princ STRPWD) <br/> (setq mcode(substr strpwd (+(* sum 5)1) 19))<br/> (setq sncode(substr strpwd (-(*(- k sum) 5)19) 19)) <br/> (PRINC)<br/> )<br/> ;;读取数据<br/> (defun read_data(filename) <br/> (if (setq fp(open filename "r")) <br/> (progn <br/> (setq dt0(read-line fp)) <br/> (setq dt1(read-line fp)) <br/> (setq dt2(read-line fp))<br/> (setq dt3(read-line fp))<br/> (close fp) <br/> ; (setq listmcode dt1) <br/> );end progn<br/> <br/> (princ(strcat"\n failed Open file:"filename "!!!\n "))<br/> ) ;end if <br/> <br/> ) <br/> ;;读取数束 </p><p>;生成随数 <br/> (defun rnd(n1 n2) <br/> (setq ra 66791 rb 17 nn 30)<br/> (setq imin(expt 2 31) imax(1- imin))<br/> (if (> n1 n2)<br/> (setq n3 n1 n1 n2 n2 n3)<br/> )<br/> <br/> (setq rn(atoi(substr(rtos(getvar "cdate")2 7)14)))<br/> (repeat nn<br/> (setq rn(+(* rn ra)rb))<br/> (if (minusp rn)(setq rn(- rn imin))) <br/> ) <br/> ;(setq pwdstr"")<br/> (setq rn(rem rn imax))<br/> (setq rn(/ rn imax 1.0))<br/> (setq rn(+(fix(* rn(1+ (- n2 n1))))n1)) <br/> )</p><p>;888888888888888888888888888</p><p>(defun psaveoldsysarg () ;保存系统变量<br/> <br/> (setq oldcmde (getvar "cmdecho")<br/> oldblip (getvar "blipmode")<br/> oldosmo (getvar "osmode")<br/> oldclay (getvar "clayer")<br/> oldcolo (getvar "cecolor")<br/> oldltyp (getvar "celtype")<br/> oldchec (getvar "limcheck")<br/> oldrege (getvar "regenmode")<br/> oldstyl (getvar "textstyle")<br/> oldtxte (getvar "texteval") <br/> olderr *error*<br/> <br/> )<br/> <br/> ;;在所有的程序中使用<br/> (setq pxl_osmode (getvar "osmode")) </p><p> ;; (if (tblsearch "ucs" "olducs") <br/>;; (command "._ucs" "s" "olducs" "y")<br/>;; (command "._ucs" "s" "olducs")<br/>;; )<br/> <br/> (setvar "cmdecho" 0)<br/> (setvar "blipmode" 0)<br/> (setvar "osmode" 0)<br/> (setvar "limcheck" 0)<br/> (setvar "regenmode" 1)<br/> (setvar "texteval" 1)<br/> ;;(command "handles" "on")<br/> (setq *error* pmterror) <br/> ;(pxl_undo_push)<br/>)</p><p><br/>(defun prestoreoldsysarg () ;恢复系统变量<br/> ;(pxl_undo_pop)<br/> <br/> (if (= (type oldcmde) 'int) (setvar "cmdecho" oldcmde))<br/> (if (= (type oldblip) 'int) (setvar "blipmode" oldblip))<br/> (if (= (type oldosmo) 'int) (setvar "osmode" oldosmo))<br/> (if (= (type oldchec) 'int) (setvar "limcheck" oldchec))<br/> (if (= (type oldrege) 'int) (setvar "regenmode" oldrege))<br/> (if (= (type oldtxte) 'int) (setvar "texteval" oldtxte))<br/> (if (= (type oldcolo) 'str) (setvar "cecolor" oldcolo))<br/> (if (= (type oldclay) 'str) (setvar "clayer" oldclay))<br/> (if (= (type oldltyp) 'str) (setvar "celtype" oldltyp))<br/> (if (= (type oldstyl) 'str) (setvar "textstyle" oldstyl))<br/> ;; (if (tblsearch "ucs" "olducs") (command "._ucs" "r" "olducs")) <br/> (setq *error* olderr)<br/> (menucmd"s=screen")<br/> (redraw)<br/> (princ)<br/>)<br/>(defun pmterror(s)<br/> (princ"\n程序运行条件不足, 程序自动退出.")<br/> ;; (princ"\n错误是:") (princ s)<br/> (command ^c)<br/> ;(pxl_undo_pop)<br/> (command "._u")<br/> (prestoreoldsysarg) <br/> (setq *error* olderr)<br/> (princ)<br/>)</p><p></p><p></p><p>;DCL 文件</p><p>//ddpass.dcl<br/> pwd: dialog{<br/> label="注册码";<br/> :edit_box{<br/> key="mcode";<br/> label="注册码:";<br/> // password_char="*";<br/> }<br/> :edit_box{<br/> key="password";<br/> edit_limit=19;<br/> label="授权号:";<br/> //password_char="*";<br/> }<br/> ok_cancel;<br/> }</p><p> <br/>///::::: ddtoggle.dcl<br/></p>xbkxbk 发表于 2008-1-13 20:35:00
[注意]从程式表面上看,加密存在一些漏洞
<p>楼上的加密,相信花了不少时间研究...只是有些函数没有提供...无法断定好坏....</p><p>(先声明:说实话,解密工具我不会用,只是了解有这么一种东东,例如:winHEX之类的=>不知道是不是这样写)</p><p>(1) 先排除专业解密的工具不说,只要成功注册了你的程式,用最基本的硬盘备份工具(如GHOST之类),就有[可能]不再需要你提供注册码,就能无限制使用,但上面也提到过了,有些函数没有提供,无法断定好坏/无法断定加密是否有效/是否能排除硬盘备份这类功能....</p><p>(2) 如果你的程式很重要,加密技术最好由自己创新,毕竟自己写的加密技术,只有自己最了解是否存在漏洞,才能把漏洞机率降至最低......</p><p>(3) 另外,从加密程式的严密性来说,重要的变量没有考虑清空/用第3方软件可以拦截得到,例如变量dt2,是全局变量吗?这个应该是用来比较的注册码,而且是正确的注册码,要是我在对话框那,按ESC取清,那dt2变量应该还存在值,那么用(princ dt2),就能得到注册码,你说是不?</p><p>以上几点仅供参考, 希望对你的加密程式有所帮助....</p><p>对了,上次多亏兄的指点,对lisp加密技术这块,有深入的研究,实在很感谢呀...</p><p></p>yjsksjscn 发表于 2008-1-14 16:14:00
<p>佩服!佩服!</p><p>原来LSP还可以这样玩!</p><p>受教了</p>173375424 发表于 2008-1-15 11:48:00
<p>好东东,但是我不懂,学习中..............</p>chenbh2 发表于 2010-4-13 22:08:00
我也在学习中haiyunzhou 发表于 2011-12-31 16:08:18
又学习好东西了