黄河 发表于 2008-1-1 10:39:00

为LSP加密的新思路

<p>我的思路是这样的不知是否可行:<br/>加载程序时,检查是否有注册表项AA,<br/>&nbsp;(如果有,用公式对AA求值的结果为XX,用XX与注册表项BB对比,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (如果一致,则加载程序成功)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (如果不一致或没有BB项,则给出用户申请号AA,提示注册<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (如果用户输入正确,则写入或履盖注册表BB,并加载程序成功)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (如果不正确,退出)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>(如果没有,写出一个随机的号到注册表AA,并用以上法进行<br/>&nbsp; )</p><p></p><p>所以注册表AA,在第一次运行时已写入了,以后不用再改了,比如写入系统时间20080101123654367到AA,<br/>上面的XX是作者用自己的公式来计算的,比如AA/4*3+456,公式在程序里,程序已生成VLX,<br/>用户须将AA告诉作者,作者才能给出XX,<br/>所以注册表写入更隐藏的地方,也可将申请号用AA进行另一公式计算,使得用户在注册表里搜不到申请号AA,否则用户将AA的注册表导入其它电脑,用上次作者的注册号进行注册。 <br/>我认为这样的好处是:有的用主板号或其它的来得到上面AA,但主板生产商不一样,很多读取不到。。。</p><p>大家认为这样行吗,看高手能否做到。<br/>仅供学习用,大家也不要认为还要加密这么小器</p>

hustrys 发表于 2008-1-13 11:33:00

<p>大家看看这个是否可以,这是本人编写的,里面有一些与本注册程序无关的函数,这里不再算数删除; register_lisp<br/>; 2006.11&nbsp; by emrys<br/>&nbsp; (defun register()<br/>&nbsp;&nbsp;&nbsp; (GRTEXT -2 "请输入授权码......") <br/>&nbsp;&nbsp;&nbsp; (setq Pass_File "C:\\Program Files\\Common Files\\Autodesk Shared\\lisp.ry")<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq fn(findfile Pass_File))&nbsp; <br/>&nbsp; (if (= fn nil)&nbsp; ;创建文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;(PROGN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;(setq fn Pass_File)&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;(setq fh(open fn "w"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;(setq str1 "Don't remove these data!!\n")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;(princ str1 fh) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (getcode)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;(princ mcode fh)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ "\n" fh)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ sncode fh)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;(close fh)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (read_data fn)&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (pwd)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp; ;END PROGN<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (read_data fn)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (or(= dt3 nil)(/= dt2 dt3))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (pwd)<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq passflage 1)<br/>&nbsp;&nbsp;&nbsp; (princ"程序运行条件成熟 ,执行程序......")<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp; ;end progn<br/>&nbsp;&nbsp; )&nbsp; ;end if</p><p>&nbsp;(princ )<br/>&nbsp; <br/>&nbsp;) ;end defun</p><p>;df8888888888888888<br/>(defun pwd ()<br/>&nbsp; (setq dcl_id(load_dialog "dcl\\pwd.dcl"))<br/>&nbsp;&nbsp;&nbsp; (if (null (new_dialog "pwd" dcl_id))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (exit) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; (setq fn Pass_File) <br/>&nbsp;&nbsp;&nbsp;&nbsp; ;(read_data fn)&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; (set_tile "mcode" dt1)&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; (if (or(= dt3 nil)(/= dt2 dt3))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq dt3 "你还没有注册!请输入授权号")&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq passflage 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (set_tile "password" dt3)&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; (action_tile "password" "(GETDATApwd)(done_dialog 3) ")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "accpet" "(done_dialog 3)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (action_tile "cancel" "(done_dialog 0)")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;;(setq mc(get_tile "mcode"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;(princ" mc=")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; (princ mc)<br/>&nbsp;&nbsp;;(setq psd(get_tile "password" ))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;(princ&nbsp; "&nbsp;&nbsp; psd=")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; (princ&nbsp; psd)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;(saveok)<br/>&nbsp;&nbsp; ;(getdata)<br/>&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq what_next(start_dialog))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cond<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((= what_next 3)(SAVEOK))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;((= what_next 1) (princ "\n dfg "))<br/>&nbsp; ((= what_next 0) (princ "取消运行程序 "))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; (start_dialog)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (unload_dialog dcl_id)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ)&nbsp; <br/>)<br/>(defun getdatapwd()<br/>&nbsp;&nbsp;&nbsp; (setq mc(get_tile "mcode"))<br/>&nbsp;&nbsp;&nbsp; (setq psd(get_tile "password" ))&nbsp;&nbsp; <br/>&nbsp; )<br/>(defun saveok()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;(setq psd(get_tile "password" )) <br/>&nbsp;(if (= dt2 psd)<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq fn Pass_File)&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq fh(open fn "a"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ "\n" fh)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ psd fh)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (alert "注册成功!")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (close fh)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq passflage 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ "注册成功!")<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (alert "授权号不正确!请重新输入")<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq passflage 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (pwd)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>(defun getcode()&nbsp; <br/>&nbsp; (setq sum(rnd 1 11))&nbsp; <br/>&nbsp; (princ sum)&nbsp; <br/>&nbsp; (setq STRPWD " dfgg hewa wwhu ijut kops gper jfgr pznd vwek murj"&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp; <br/>&nbsp; (SETQ sdt1(STRLEN STRPWD))<br/>&nbsp; (SETQ k(/(+ sdt1 1)5))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;(princ sdt1)<br/>&nbsp;&nbsp; ;(princ STRPWD)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp; (setq mcode(substr strpwd (+(* sum 5)1) 19))<br/>&nbsp; (setq sncode(substr strpwd (-(*(- k sum) 5)19) 19))&nbsp; <br/>&nbsp;&nbsp; (PRINC)<br/>&nbsp; )<br/>&nbsp;;;读取数据<br/>&nbsp; (defun read_data(filename)&nbsp;&nbsp; &nbsp;<br/>&nbsp;(if (setq fp(open&nbsp; filename "r"))&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq dt0(read-line fp)) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;(setq dt1(read-line fp)) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;(setq dt2(read-line fp))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq dt3(read-line fp))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (close fp)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; (setq listmcode dt1)&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );end progn<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp; (princ(strcat"\n failed Open file:"filename "!!!\n "))<br/>&nbsp;) ;end if&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp; <br/>&nbsp; ) <br/>&nbsp;;;读取数束 </p><p>;生成随数 <br/>&nbsp;&nbsp; (defun rnd(n1 n2)&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; (setq ra 66791 rb 17 nn 30)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq imin(expt 2 31) imax(1- imin))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (if (&gt; n1 n2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq n3 n1 n1 n2 n2 n3)<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq rn(atoi(substr(rtos(getvar "cdate")2 7)14)))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (repeat nn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq rn(+(* rn ra)rb))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (minusp rn)(setq rn(- rn imin)))&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;(setq pwdstr"")<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq rn(rem rn imax))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq rn(/ rn imax 1.0))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq rn(+(fix(* rn(1+ (- n2 n1))))n1)) <br/>&nbsp;&nbsp;&nbsp;&nbsp; )</p><p>;888888888888888888888888888</p><p>(defun&nbsp; psaveoldsysarg ()&nbsp;&nbsp; ;保存系统变量<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp; (setq oldcmde (getvar "cmdecho")<br/>&nbsp;&nbsp;&nbsp; oldblip (getvar "blipmode")<br/>&nbsp;&nbsp;&nbsp; oldosmo (getvar "osmode")<br/>&nbsp;&nbsp;&nbsp; oldclay (getvar "clayer")<br/>&nbsp;&nbsp;&nbsp; oldcolo (getvar "cecolor")<br/>&nbsp;&nbsp;&nbsp; oldltyp (getvar "celtype")<br/>&nbsp;&nbsp;&nbsp; oldchec (getvar "limcheck")<br/>&nbsp;&nbsp;&nbsp; oldrege (getvar "regenmode")<br/>&nbsp;&nbsp;&nbsp; oldstyl (getvar "textstyle")<br/>&nbsp;&nbsp;&nbsp; oldtxte (getvar "texteval")&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; olderr&nbsp; *error*<br/>&nbsp; <br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp; ;;在所有的程序中使用<br/>&nbsp;&nbsp; (setq pxl_osmode (getvar "osmode"))&nbsp;&nbsp; </p><p>&nbsp;;;&nbsp; (if (tblsearch "ucs" "olducs") <br/>;;&nbsp;&nbsp;&nbsp;&nbsp; (command "._ucs" "s" "olducs" "y")<br/>;;&nbsp;&nbsp;&nbsp;&nbsp; (command "._ucs" "s" "olducs")<br/>;;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp; (setvar "cmdecho" 0)<br/>&nbsp;&nbsp; (setvar "blipmode" 0)<br/>&nbsp;&nbsp; (setvar "osmode" 0)<br/>&nbsp;&nbsp; (setvar "limcheck" 0)<br/>&nbsp;&nbsp; (setvar "regenmode" 1)<br/>&nbsp;&nbsp; (setvar "texteval" 1)<br/>&nbsp;&nbsp; ;;(command "handles" "on")<br/>&nbsp;&nbsp; (setq *error* pmterror) <br/>&nbsp;&nbsp; ;(pxl_undo_push)<br/>)</p><p><br/>(defun prestoreoldsysarg ()&nbsp;&nbsp; ;恢复系统变量<br/>&nbsp;&nbsp; ;(pxl_undo_pop)<br/>&nbsp;<br/>&nbsp;&nbsp; (if (= (type oldcmde) 'int) (setvar "cmdecho" oldcmde))<br/>&nbsp;&nbsp; (if (= (type oldblip) 'int) (setvar "blipmode" oldblip))<br/>&nbsp;&nbsp; (if (= (type oldosmo) 'int) (setvar "osmode" oldosmo))<br/>&nbsp;&nbsp; (if (= (type oldchec) 'int) (setvar "limcheck" oldchec))<br/>&nbsp;&nbsp; (if (= (type oldrege) 'int) (setvar "regenmode" oldrege))<br/>&nbsp;&nbsp; (if (= (type oldtxte) 'int) (setvar "texteval" oldtxte))<br/>&nbsp;&nbsp; (if (= (type oldcolo) 'str) (setvar "cecolor" oldcolo))<br/>&nbsp;&nbsp; (if (= (type oldclay) 'str) (setvar "clayer" oldclay))<br/>&nbsp;&nbsp; (if (= (type oldltyp) 'str) (setvar "celtype" oldltyp))<br/>&nbsp;&nbsp; (if (= (type oldstyl) 'str) (setvar "textstyle" oldstyl))<br/>&nbsp; ;; (if (tblsearch "ucs" "olducs") (command "._ucs" "r" "olducs"))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp; (setq *error* olderr)<br/>&nbsp;&nbsp; (menucmd"s=screen")<br/>&nbsp;&nbsp; (redraw)<br/>&nbsp;&nbsp; (princ)<br/>)<br/>(defun pmterror(s)<br/>&nbsp;&nbsp;&nbsp; (princ"\n程序运行条件不足, 程序自动退出.")<br/>&nbsp;&nbsp;&nbsp; ;; (princ"\n错误是:") (princ s)<br/>&nbsp;&nbsp;&nbsp; (command ^c)<br/>&nbsp;&nbsp;&nbsp; ;(pxl_undo_pop)<br/>&nbsp;&nbsp;&nbsp; (command "._u")<br/>&nbsp;&nbsp;&nbsp; (prestoreoldsysarg) <br/>&nbsp;&nbsp;&nbsp; (setq *error* olderr)<br/>&nbsp;&nbsp;&nbsp; (princ)<br/>)</p><p></p><p></p><p>;DCL 文件</p><p>//ddpass.dcl<br/>&nbsp;&nbsp; pwd: dialog{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; label="注册码";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :edit_box{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key="mcode";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; label="注册码:";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // password_char="*";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :edit_box{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key="password";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edit_limit=19;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; label="授权号:";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //password_char="*";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp; ok_cancel;<br/>&nbsp; }</p><p>&nbsp; <br/>///:::::&nbsp;&nbsp;&nbsp; ddtoggle.dcl<br/></p>

黄河 发表于 2008-1-1 10:45:00

<p>以下是参考一位网友的硬盘号得申请号的方法</p><p></p><p>;*************************************放在LSP文件头部**********/2+123456*************************************<br/>;*********************************************************************************************************<br/>(defun UseLimit&nbsp;(/ FIND_SERIALNUMBER regNumber num regnum reg_path *error*)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>(defun *error* (msg / ent count)(princ))(defun FIND_SERIALNUMBER (DRIVE / FILSYS VAL)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>(setq FILSYS (vlax-create-object "Scripting.FileSystemObject"))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>;;(vlax-dump-object FILSYS t)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>(setq VAL (vlax-invoke FILSYS "GetDrive" DRIVE))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>;;(vlax-dump-object VAL t)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>(setq VAL (vl-catch-all-apply 'vlax-get(list VAL "SerialNumber")))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>(vlax-release-object FILSYS)(if (vl-catch-all-error-p VAL)(setq VAL NIL) VAL))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>(setq reg_path "HKEY_CURRENT_USER\\Software\\黄河")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>(setq regNumber (vl-registry-read reg_path "黄河CAD注册码"))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>&nbsp; (if (/= regNumber (itoa(+ (/ (atoi (rtos (atoi (rtos (FIND_SERIALNUMBER "C:"))))) 2) 123456)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>&nbsp;&nbsp;&nbsp; (progn (alert (strcat "请注册!</p><p><br/>你将运行的程序由“黄河”编译整理,第一次运行请注册!<br/>注册方法:联系139********或QQ574******或<a href="mailto:HHL******@163.com">HHL******@163.com</a>递交申请号,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 得到注册码即可注册!!!"))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>(setq num (rtos (FIND_SERIALNUMBER "C:")))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>(setq regnum (itoa (+ (/ (atoi (rtos (atoi num))) 2) 123456)))(terpri)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>(princ (strcat "*************************************您的申请码为: " num))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>(setq regNumber (getstring "\n请输入注册码:"))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>(if (/= regNumber regnum) (progn (alert "注册码无效!") (exit))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>(progn (vl-registry-write reg_path "黄河CAD注册码" regnum) (alert "您已成功注册!"))) T))(princ))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>(UseLimit)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;*<br/>;*********************************************************************************************************</p>

hustrys 发表于 2008-1-1 11:52:00

<p>其实不用这么复杂,</p><p>我的思路是:编一个注册reg.lsp:功能为:如是第一次使用则创建一个新的文本文件,命名reg.dll把它放到系统里(这样其他人很难破解),写入lsp程序里已设定好,随机显示的字符串;编设一个注册对话框,该对话框注册码,读取reg.dll中初次写入的字符串,再编一个注册机,用于将字符串按一定的公式加密;将读取reg.dll中初次写入的字符串,放到注册机里生成一个新的字符串,该字符串即为授权码;通过reg.lsp将授权码存入到日reg.dll中;程序每次调用时,均先比较注册码和授权码(通过公式反编译解密授权码,使注册码与反编译解密后的字符串一至)如一致,则设定开关Isreg=1,不一致,则设定开关Isreg=0;最后将reg.lsp编译为reg.vlx</p><p>其他应用程序,在使用时,只需调用reg.vlx,确认判断Isreg的值;若Isreg=1,则程序继续执行,否则弹出注册对话框,重新注册;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>

黄河 发表于 2008-1-1 12:50:00

<p>以上只是个的思路,我在2楼发的代号,对于一般的加密就可以做到,只是对有些机器无效 ,不注册也可使用。</p><p>我们也不是做专业软件,加密也只是学习而已,只是做一个更完善的程序,即使加密也可用搜索内存的方法得到</p>

cnks 发表于 2008-1-1 13:09:00

只要不是明码比较的,不用很复杂就能对付大部分菜鸟

27012701 发表于 2008-1-1 16:20:00

<p>呵呵,楼主写一个出来,我们来破破看,看能不能破呀..写个Crackme</p>

黄河 发表于 2008-1-1 17:42:00

<p>可以破呀,想破的话我给一个你试试,是编号的,命令是222,有录的视频效果,如果你直接可用,说明和4楼所说的一样,对有些机器无效</p><p>一楼所说的只要你找到注册表的位置就破了,二楼的可用搜索内存的方法破,我们不是做专业软件的,自己收集或写程序需要心思,你想破也要花点心思呀!我在上传文件里的程序是加密的,楼上的试一下</p><p>再次说明,加解密只是学习LSP用</p><p></p>

cnks 发表于 2008-1-1 19:24:00

本帖最后由 作者 于 2008-1-1 20:20:59 编辑 <br /><br /> <p>楼上算法为:sn/4+123</p><p>保存位置:HKEY_CURRENT_USER\\Software\\黄河</p><p>看看是不是对头?</p>

mccad 发表于 2008-1-1 22:30:00

加密最好用MD5来加密

cnks 发表于 2008-1-1 22:34:00

mccad发表于2008-1-1 22:30:00static/image/common/back.gif加密最好用MD5来加密

<p>lsp的md5版本还没见过,希望明总有空做一个</p>
页: [1] 2 3
查看完整版本: 为LSP加密的新思路