




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
超级函数表达式运算器v20破解心得 软件名称超级函数表达式运算器v20算法分析软件介绍超级函数表达式运算器既是方便实用的数字计算器,又是一个会列表达式就会运算的超级新颖的多功能公式化运算器。它包括算术计算、进制转换、逻辑处理、数值处理、字符处理、三角函数及推导函数处理等模块,可综合性的计算各种多层嵌套、复杂的函数表达式。你只要象在纸上列表达式一样列出符合要求的运算式,就立即可以看到运算结果,而且运算结果随着表达式的不断变化而不断变换显示。表达式修改方便,可复制粘贴,可用键盘快速输入。2.0版界面更加美观、提示更加科学、操作更加简单、更加方便实用。2,0版新增独特的批量运算功能,可一次运算多个表达式的值并可以计算各单项运算之和。可广泛应用于办公、学习及需要使用计算器进行复杂计算的各个领域。超级函数表达式运算器是进行数字计算、公式运算、函数应用、vb编程的好帮手。使用限制试用30天,无功能限制保护方式采用机器码检查注册码,以保证注册码不得多机使用。并在程序退出时检验注册码,使破解增加了难度。破解工具SmartCheck6.20、olldbg1.1、Peid0.93、QuickUnpack、Regmon7.02破解目的研究算法分析,了解VB的数据类型,掌握点儿知识破解作者CCRLEI作者声明初学Crack,只是感兴趣,没有其他目的。本破解纯以学习和交流为目的,偶得一点心得,大家分享。如有错误,蒙请大侠们指正。转载时请保持完整。之所以起这个题目,是因为表面上程序已经提示你注册成功了,但程序在退出时还要校验注册码是否含作者指定的内容,如果没有的话,就会自动删除该程序,够狠的。好了,废话少说,入正题吧!破解过程1、查壳PEiDv0.93PECompact2.x-JeremyCollake2、脱壳QuickUnpack3、编程语言PEiDv0.93MicrosoftVisualBasic5.0/6.04、破解调试1)运行程序,提示共享软件还可用多少天,欢迎注册使用等提示。进入注册选项发现:机器码22222222222854720884_754026158,要求输入注册码。2)由于作者使用VB开发,所以先用SmartCheck看看作者的关于注册的大概思路。软件启动后(主要部分)(1)读取注册表SOFTWAREsoftjasdataNam下键值RegCreateKeyA(HKEY:80000002,char*:00140934,PTR:0012FD44)returnsLONG:0键值内容转换后和机器码比较(通过读硬盘型号、硬盘物理系列号生成机器码,由机器码变成注册码的一部分(另一部分在退出程序时使用)如不符则(2)读键值HKEY_CURRENT_USERSoftwareMicrosofthtoolseDataw1、w2、w3这一部分在后面介绍,它的目的是算还共享多少天。(3)顺便说一下程序如何得到机器码:a、通过读硬盘型号85TC2088T、硬盘物理系列号TOSHIBAMK4026GAXb、TOSHIBAMK4026GAX取空格后的MK4026GAX,第一个字符“M”Ascii值77,取后面的7,第二个字符“K”755,数字的不变“4”4,“0”0,“6”6,“G”711,“A”655,“X”888754026158c、85TC2088T换成85TC2088T(11个空格共二十位),第一个“”(空格)Ascii值32取后面“2”,依次共11个“2”即“22222222222”数字不变“85”,“T”84“4”。同上,所以本机机器码“22222222222854720884_754026158”以上是通过SmartCheck分析得(机器码部分没有经OD核实,哪位大侠如经汇编核实,请告诉我我的转换分析是否正确,尤其是11个空格那儿),但输入的试炼码如何转换并不清楚,虽说通过SmartCheck完全可以试出注册码,但我们的目的应该是注册机,呵呵,所以OD上。3)用OD调试:(只作简单说明)由于作者采用“Instr”比较真假注册码,所以用_vbainstr下断ODAlt+ECtrl+N_vbainstr下断运行,输入试练码876543210断在7628BD9455PUSHEBPCtrl+F9,F8回到主程序,上下看看,左右找找,在这里。00441460.|50PUSHEAX00441461.|FF15B0734400CALLDWORDPTRDS:;msvbvm50._vbaStrVarVal00441467.|50PUSHEAX00441468.|FFD7CALLEDI;注册码的第一个字符8的值“38”(16进制)放入到AX中0044146A.|68FC994000PUSH超级函数.004099FC0044146F.|66:8BD8MOVBX,AX;BX=AX=003800441472.|FFD7CALLEDI;msvbvm50.rtcAnsiValueBstrAscii转换“A”41(16进制)放到AX中00441474.|66:2BD8SUBBX,AX;BX=3841FFF9及十进制900441477.|8D9538FFFFFFLEAEDX,DWORDPTRSS:EBP-C8;0044147D.|0F80B3010000JO超级函数.0044163600441483.|8D4D9CLEAECX,DWORDPTRSS:EBP-6400441486.|66:899D40FFFMOVWORDPTRSS:EBP-C0,BX。004414B2.|FF15B0734400CALLDWORDPTRDS:;换成10进制的字符“9”,放入Eax004414B8.|50PUSHEAX;Eax“9”入栈004414B9.|FF1580744400CALLDWORDPTRDS:;msvbvm50.rtcR8ValFromBstr004414BF.|DC2548204000FSUBQWORDPTRDS:402048;浮点减st=9.000000000000000000ds:00402048=-0.50000000;St0=8.500000000004414C5.|833D00304400CMPDWORDPTRDS:443000,0004414CC.|7508JNZSHORT超级函数.004414D6004414CE.|DC3550204000FDIVQWORDPTRDS:402050;浮点除st=-8.500000000000000000ds:00402050=2.500000000;St03.400000004414D4.|EB11JMPSHORT超级函数.004414E7004414D6|FF3554204000PUSHDWORDPTRDS:402054004414DC.|FF3550204000PUSHDWORDPTRDS:402050004414E2.|E8DD0BFCFFCALL004414E7|DFE0FSTSWAX004414E9.|A80DTESTAL,0D004414EB.|0F8540010000JNZ超级函数.00441631004414F1.|FF1568744400CALLDWORDPTRDS:;msvbvm50._vbaFPInt取整St0=4.00000004414F7.|DD9D40FFFFFFFSTPQWORDPTRSS:EBP-C0;St0=4.00000.0044152C.FF15B8734400call;msvbvm50._vbaVarCat字符串连接。00441534.|8D8D6CFFFFFFLEAECX,DWORDPTRSS:EBP-94;ecx=40044153A.|FFD6CALLESI0044153C.|8D85D8FEFFFFLEAEAX,DWORDPTRSS:EBP-12800441542.|8D8DE8FEFFFFLEAECX,DWORDPTRSS:EBP-11800441548.|50PUSHEAX00441549.|8D55DCLEAEDX,DWORDPTRSS:EBP-240044154C.|51PUSHECX0044154D.|52PUSHEDX0044154E.|FF1570744400CALLDWORDPTRDS:;msvbvm50._vbaVarForNext注册码下一个字符00441554.|8B1D18734400MOVEBX,DWORDPTRDS:;msvbvm50.rtcMidCharVar0044155A.E9A2FEFFFFJMP超级函数.00441401。0044152C.FF15B8734400call;msvbvm50._vbaVarCat876543210注:读取试练码(个数为偶数)的顺序为最后一个、第一个、倒数第二个、第二个。依此类推,个数为奇数的顺序为第一个、倒数第一个、第二个、倒数第二个。依此类推,本例为奇数个计算结果-4-7-4-7-5-6-5-6-5和本机的机器码22222222222854720884_754026158的前一部分即22222222222854720884用vbainstr比较如结果大于0,Vbainstr比较后一段754026158,通过则注册成功。另外忘了在哪里机器码的前十位每两位对应一个字符,后面一个对应一个(大侠帮忙)4)推注册码:以我的机器为例:机器码:22222222222854720884_754026158xxxxxFUNKSFAUUKSNKAFPDNU由于校验时是后一个前一个的读注册码(机器码位数为偶数),所以还得给他调换一下,后一个前一个xxxxxFUNKSFAUUKSNKAFPDNUxxFNSAUSKFDUNPANKUFKUxxx(每个机器码字符可对应23个注册码字符,因为上面有个除以2.5)好了注册码出来了,试试,运行程序注册填入注册码嘿嘿嘿嘿,通过了,提示我“恭喜您,注册成功!”5)话说几天后,又拿出这个软件用用,算算术什么的,还行,挺好用,关闭退出,咦,怎么桌面上的快捷方式图标变了,在点击,说找不到可执行文件了,由于是春节放假期间,我以为我的笔记本中了病毒,因为杀毒软件好几天没升级了,也没理他,再把原来备份的一个文件恢复出来接着用,运行了几次又没了,这下子怪了,升级杀毒软件,杀毒,没问题呀,我想我想,我使劲的想,哼哼,应该是程序本身的问题吧,是不是我的注册码中“x”太多,像是破解出来的,(因为把x改成y也可以注册),或者。不明白,接着使用SmartCheck,看看程序退出时有什么动作,哈哈InStr(long:1,String:xxFNSAUSK.,String:CJHBYS,Integer:0)returnsLONG:0Arguments-Longstart=10x00000001Stringstring1=00141EC4=xxFNSAUSKFDUNPANKUFKUxxxStringstring2=0040952C=CJHBYSIntegercompare=00x0000还要比较注册码中是否有字符串CJHBYS,小样的,往下看看,如果注册码中没有CJHBYS,就生成个批处理文件In.bat把程序删掉,够狠的吧。把它加到注册码里,运行(可先到注册表把SOFTWAREsoftjasdataNam下值删掉,就可重新注册),重新注册xxFNSAUSKFDUJBSYHCNPANKUFKUxxx通过,再用SmartCheck看看退出,还要检验,这回检验是否含有“5309582”。我烦了,我哪知道那个破数是怎么来的,检测不过去程序又会自动生成一个In.bat文件写上删除这个可执行文件,再删除In.bat。不想了,睡觉去。6)若干天后还是得解决“5309582”的来源问题,接着OD吧,原来是And来得,如下:;以下为退出时检验注册码。00435623.FF15F8734400call;msvbvm50._vbaStrCopy004356298B45E8moveax,ebp-18;机器码前八位22222222放入Eax0043562C.50pusheax;推入0043562D.FF1580744400call;msvbvm50.rtcR8ValFromBstr00435633.8B3D40744400movedi,;msvbvm50._vbaFpI400435639.FFD7calledi;将22222222转为16进制放入Eax0043563B.8B4DE4movecx,ebp-1C;机器码后九位754026158放入Ecx0043563E.8BD8movebx,eax;将前八位转为16进制的数再放入Ebx00435640.51pushecx;把754026158推入00435641.FF1580744400call;msvbvm50.rtcR8ValFromBstr00435647.FFD7calledi;将后9(或8位)转换为16进制放入Eax00435649.23D8andebx,eax;两个数逻辑与结果51048E即10进制的53095820043564B.53pushebx0043564C.FF1570724400call;msvbvm50._vbaStrI451048E的10进制530958200435652.8BD0movedx,eax00435654.8D4DE0leaecx,ebp-2000435657.FFD6callesi00435659.8B1558304400movedx,443058;注册码放入Edx0043565F.6A01push100435661.52pushedx;Edx入栈00435662.33FFxoredi,edi00435664.682C954000push0040952C;UNICODECJHBYS入栈00435669.57pushedi0043566A.FF15DC734400call;msvbvm50._vbaInStr检验是否有CJHBYS00435670.83F801cmpeax,1;CJHBYS出现在第几位开始(19)和1比较00435673.7D12jgeshort00435687;大于等于1(及注册码中含CJHBYS)则跳如下一步,生成In.bat见下面00435675.8D45D0leaeax,ebp-3000435678.50pusheax00435679.E892F7FFFFcall00434E100043567E.8D4DD0leaecx,ebp-3000435681.FF1578724400call;msvbvm50._vbaFreeVar004356878D4DA0leaecx,ebp-600043568A.8D55D0leaedx,ebp-300043568D.51pushecx0043568E.52pushedx0043568F.C745A858304movdwordptrebp-58,0044305800435696.C745A008400movdwordptrebp-60,40080043569D.E89EBF0000call00441640004356A2.8B45E0moveax,ebp-20;将5309582放入Eax004356A5.8D4DD0leaecx,ebp-30004356A8.6A01push1004356AA.8D5590leaedx,ebp-70004356AD.894598movebp-68,eax004356B0.51pushecx004356B1.52pushedx004356B2.8D45C0leaeax,ebp-40004356B5.57pushedi004356B6.50pusheax004356B7.C7459008000movdwordptrebp-70,8004356BE.C7458801000movdwordptrebp-78,1004356C5.C7458002800movdwordptrebp-80,8002004356CC.FF15AC734400call;msvbvm50._vbaInStrVar注册码换算后检验是否含5309582004356D2.8D4D80leaecx,ebp-80。7)推注册码:22222222222854720884_754026158和5309582连接222222222228547208847540261585309582xxxxxFUNKSFAUUKSNKAFPDNUNIAXNUFxxxxxFUNKSFAUUKSNKAFPDNUNIAXNUF共31位为奇数,所以要头一个尾一个的排下序xxxUKFUKNAPNNANFUXIUDFKSUASNFxx最后再把要检验的CJHBYS插入xxxUKFUKNAPNNANFCJHBYSUXIUDFKSUASNFxx把注册码拷贝到注册表SOFTWAREsoftjasdataNam下(程序把注册码放在这个地方),SmartCheck运行程序,初始化时校验注册码通过,退出程序,Unload时校验注册码也通过,这回就不生成In.bat文件了,所以程序也就不被删除了.8)退出程序时代码分析;以下为程序退出时生成新文件来删除程序注:我把改为了方便调试(因为调试时的中文文件名有时会显示出乱码,所以改了)。0043507A8B55C8movedx,ebp-38;文件名放倒Edx本事例为12340043507D.52pushedx;入堆栈0043507E.68A4944000push004094A4;00435083.FFD7calledi;字符串连接后1234.exe放入Eax00435085.8BD0movedx,eax;edx1234.exe00435087.8D4DCCleaecx,ebp-34;。004350A6.FF15F8734400call;msvbvm50._vbaStrCopy004350AC.8B45E4moveax,ebp-1C;in.bat放入Eax004350AF.50pusheax;入栈004350B0.6A01push1004350B2.6AFFpush-1004350B4.6A02push2004350B6.FF15D0734400call;msvbvm50._vbaFileOpen打开文件in.bat004350BC.8B1D8C734400movebx,;msvbvm50._vbaPrintFile004350C2.68C8944000push004094C8004350C7.6A01push1004350C9.68D8754000push004075D8004350CE.FFD3callebx;004350D0.8B4DCCmovecx,ebp-34004350D3.83C40Caddesp,0C004350D6.68DC944000push004094DC004350DB.51pushecx004350DC.FFD7calledi004350DE.8BD0movedx,eax;edx=eax=del1234.exe004350E0.8D4DC8leaecx,ebp-38;004350E3.FFD6callesi;004350E5.50pusheax004350E6.6A01push1004350E8.68D8754000push004075D8004350ED.FFD3callebx004350EF.83C40Caddesp,0C004350F2.8D4DC8leaecx,ebp-38004350F5.FF1578744400call;msvbvm50._vbaFreeStr004350FB.8B55CCmovedx,ebp-34;1234.exe004350FE.68EC944000push004094EC;UNICODEifexist00435103.52pushedx;1234.exe00435104.FFD7calledi;msvbvm50._vbaStrCat00435106.8BD0movedx,eax;UNICODEifexist1234.exe00435108.8D4DC8leaecx,ebp-380043510B.FFD6callesi;msvbvm50._vbaStrCat0043510D.50pusheax0043510E.6804954000push00409504;UNICODEGOTOSTART00435113.FFD7calledi;msvbvm50._vbaStrCat00435115.8BD0movedx,eax;UNICODEifexist1234.exeGOTOSTART00435117.8D4DC4leaecx,ebp-3C0043511A.FFD6callesi0043511C.50pusheax0043511D.6A01push10043511F.68D8754000push004075D800435124.FFD3callebx;msvbvm50._vbaPrintFile00435126.83C40Caddesp,0C00435129.8D45C4leaeax,ebp-3C0043512C.8D4DC8leaecx,ebp-380043512F.50pusheax00435130.51pushecx00435131.6A02push200435133.FF1500744400call;msvbvm50._vbaFreeStrList00435139.83C40Caddesp,0C0043513C.68DC944000push004094DC00435141.68B4944000push004094B400435146.FFD7calledi00435148.8BD0movedx,eax;(UNICODEdelin.bat)0043514A.8D4DC8leaecx,ebp-380043514D.FFD6callesi0043514F.50pusheax00435150.6A01push100435152.68D8754000push004075D800435157.FFD3callebx;msvbvm50._vbaPrintFile00435159.83C40Caddesp,0C0043515C.8D4DC8leaecx,ebp-380043515F.FF1578744400call;00435165.6A01push100435167.FF1520734400call;msvbvm50._vbaFileClose0043516D.8D55E4leaedx,ebp-1C00435170.8D4580leaeax,ebp-8000435173.6A00push000435175.50pusheax00435176.895588movebp-78,edx00435179.C7458008400movdwordptrebp-80,400800435180.FF1570734400call;msvbvm50.rtcShellshell执行文件In.bat00435186.DDD8fstpst00435188.FF1590724400call;msvbvm50._vbaEnd结束9)In.bat文件内容:(注我调试时把文件名该为了1234.exe):STARTdel1234.EXEifexist1234.EXEGOTOSTARTdelin.bat这个文件有时删除不了那个可执行文件,尤其是文件名中带括号的,原因不知,可能是全角和半角的事吧。10)注册机算法:VB做得超级函数表达式运算器v20注册机ccrlei2006-2-8PrivateSubCommand2_Click()UnloadMeEndSubPrivateSubCommand1_Click()DimSnWord,SJqm,SJqm1,Sntemp,Sntemp1,Sntemp2,Sntemp3AsStringDimi,jAsIntegerDimDsn,SnLen1,JqmLen,JqmLenL,JqmLenRAsIntegerDimSq,Sh,StempAsStringSJqm=Text1.Text机器码变量JqmLen=Len(SJqm)-1机器码长度JqmLenL=InStr(1,SJqm,_,vbBinaryCompare)-1_左边字符串长度JqmLenR=JqmLen-JqmLenL_右边字符串长度SJqm=Mid(SJqm,1,JqmLenL)+Mid(SJqm,JqmLenL+2,JqmLenR)去掉“_”Sq=Mid(SJqm,1,8)程序退出时检验注册码要用机器码前八位Sh=Mid(SJqm,JqmLenL+1,JqmLenR)程序退出时检验注册码要用机器码原“_”后字符串IfLen(Sh)9Then机器码后段位数大于9位时取8位,否则取9位Sh=Mid(SJqm,JqmLen-7,8)EndIfStemp=CDbl(Sq)AndCDbl(Sh)前八位和后8或9位逻辑与SJqm1=SJqm+Stemp新生成的机器码i=0Fori=1ToLen(SJqm1)-5机器码前10位每2位对应一个注册码Ifi=5ThenSnWord=Mid(SJqm1,i*2-1,2)ElseSnWord=Mid(SJqm1,5+i,1)EndIfDsn=Int(Val(SnWord)*2.5-0.5+65+1)转换详见上介绍Sntemp=Sntemp+Chr(Dsn)连接NextiSnLen1=Len(Sntemp)新注册码长度IfSnLen1/2Int(SnLen1/2)Then根据注册码位数的奇偶性重新排序i=0Fori=1ToSnLen1Ifi/2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能家居安防报警器创新创业项目商业计划书
- 线下活动票务与报名系统创新创业项目商业计划书
- 安徽绿海商务职业学院《JAVAWEB开发技术》2024-2025学年第一学期期末试卷
- 新乡医学院《口腔颌面外科学实验》2024-2025学年第一学期期末试卷
- 广西金融职业技术学院《经济学》2024-2025学年第一学期期末试卷
- 攀枝花学院《统计学原理(人文社科)》2024-2025学年第一学期期末试卷
- 山东师范大学《游泳教材教法》2024-2025学年第一学期期末试卷
- 成都银杏酒店管理学院《生物信息学应用实践》2024-2025学年第一学期期末试卷
- 甘肃农业职业技术学院《小学美术课程与教学》2024-2025学年第一学期期末试卷
- 餐饮门店开业筹备全流程指南
- 医院安保课件
- 文印员考试题库及答案
- 2025年涂料行业研究报告及未来发展趋势预测
- 2025河北唐山某国有企业单位招聘劳务派遣工作人员44人笔试参考题库附带答案详解(10套)
- 留疆战士考试题库及答案
- 班主任与家长沟通课件
- 2025年安庆怀宁县事业单位招聘考试试题【答案】
- 哲学导论(完整版)
- 合成孔径雷达
- 北师大版数学四年级下册全册教案设计
- 汉语拼音发音表(适合初学者和老年人)
评论
0/150
提交评论