软件名称:美萍网管大师 V7.7 解压后为1,253KB
下载地点:http://www.mpsoft.com
撰 稿 人: 井 风
时 间: 2002-04-18
破解工具:Soft-ice 4.05 Trw2000 1.22 BW2000 0.2 Unaspack 1.0.9.1
解题难度:[专 业] ##[学 士]## [硕 士] [博 士]
前 言:
很多网友要求破解,这是最新版本。
过 程:
(一)制作破解版方法:
1、用Unaspack去壳;
2、用HEX编辑器将:00475CFC JNZ 00475D05 改成永远不跳;
3、一切OK!
(二)找出注册码方法:
1、用Unaspack去壳;
2、此软件检测TRW2000的方法是依据检查TRW2000文件是否在硬盘上来判断的,所以要先用HIEW
等十六进制软件将SCON.EXE所有“trw”字符串改成“20 20 20”,即三个格,不然的话它一
检测到TRW就会调用EXITWINDOWSEX函数关机;
3、下断点:BPX MESSAGEBOXA,可以拦截试用期还剩N天的对话框;
4、分析代码如下:
0167:004C0904 MOV EAX,[004D5678]
0167:004C0909 CALL 004C2360
0167:004C090E MOV EAX,EBX
0167:004C0910 CALL 004BA428
0167:004C0915 XOR EAX,EAX
0167:004C0917 MOV [004CD4C0],EAX
0167:004C091C CALL 00475C48 <==明显这个调用就是验证核心处,重点跟踪分析此调用
0167:004C0921 TEST EAX,EAX <==返加值如果非零就可以跳过后面提醒框
0167:004C0923 JNZ NEAR 004C09AE <==
0167:004C0929 MOV EAX,[004CD4B8]
0167:004C092E SUB EAX,BYTE +0F
0167:004C0931 CMP EAX,[004F3010]
0167:004C0937 JNL 004C09AE <==比较试用天数,不管它,关键是找到核心验证外,向上……
0167:004C0939 PUSH BYTE +40
0167:004C093B LEA EAX,[EBP-18]
0167:004C093E MOV ECX,[004CD644]
0167:004C0944 MOV EDX,[004CD508]
0167:004C094A CALL 00403C78
0167:004C094F MOV EAX,[EBP-18]
0167:004C0952 CALL 00403DF0
0167:004C0957 PUSH EAX
0167:004C0958 PUSH DWORD [004CD638]
0167:004C095E LEA EDX,[EBP-24]
0167:004C0961 MOV EAX,[004CD4B8]
0167:004C0966 INC EAX
0167:004C0967 SUB EAX,[004F3010]
0167:004C096D CALL 00407890
0167:004C0972 PUSH DWORD [EBP-24]
0167:004C0975 PUSH DWORD [004CD63C]
0167:004C097B PUSH DWORD [004CD640]
0167:004C0981 PUSH DWORD 004C0A7C
0167:004C0986 PUSH DWORD 004C0A88
0167:004C098B LEA EAX,[EBP-1C]
0167:004C098E MOV EDX,06
0167:004C0993 CALL 00403CEC
0167:004C0998 MOV EAX,[EBP-1C]
0167:004C099B CALL 00403DF0
0167:004C09A0 PUSH EAX
0167:004C09A1 MOV EAX,EBX
0167:004C09A3 CALL 004269C0
0167:004C09A8 PUSH EAX
0167:004C09A9 CALL `USER32!MessageBoxA` <==试用期提醒对话框,向上分析如何跳过?
0167:004C09AE MOV DL,01
0167:004C09B0 MOV EAX,[EBX+0210]
0167:004C09B6 CALL 00456930
5、深入跟踪0167:004C091C CALL 00475C48
·
·
·
0167:00475C8E CALL 00476AF0
0167:00475C93 CMP EBX,EAX
0167:00475C95 MOV EDX,[004CDAA0]
0167:00475C9B MOV EDX,[EDX]
0167:00475C9D MOV EAX,[004CDB94]
0167:00475CA2 MOV EAX,[EAX] <==EAX的值是你输入的注册码
0167:00475CA4 CALL 00403EB8 <==子程序调用,记为*2*
0167:00475CA9 MOV EDX,[004CDD04] <==
0167:00475CAF MOV [EDX],EAX <==将调用返回值移入4CDD04指向的地址
0167:00475CB1 MOV EAX,[004CDD04] <==4CDD04指向的地址移入EAX
0167:00475CB6 CMP DWORD [EAX],BYTE +00 <==4CDD04指向的地址值与0比较
0167:00475CB9 JNZ 00475CC6 <==**此处应跳**
0167:00475CBB MOV EAX,[004CDD04]
0167:00475CC0 MOV DWORD [EAX],1B <==向4CDD04指向的内存移入1B
0167:00475CC6 MOV EAX,[004CDB94]
0167:00475CCB MOV EAX,[EAX]
0167:00475CCD CALL 00403C2C <==返加你输入注册码的长度
0167:00475CD2 CMP EAX,BYTE +05 <==检测你输入注册码是否为5位,--
0167:00475CD5 JNZ 00475CED <==不是5位则跳走。
0167:00475CD7 MOV EDX,[004CDAA0]
0167:00475CDD MOV EDX,[EDX]
0167:00475CDF MOV EAX,[004CDB94]
0167:00475CE4 MOV EAX,[EAX] <==EAX值是你输入的注册码
0167:00475CE6 CALL 00403EB8 <==子程序调用,记为*2*
0167:00475CEB TEST EAX,EAX
0167:00475CED MOV EAX,[004CD8A8] <==内存中4cd8a8指向地址的值移--
0167:00475CF2 MOV EAX,[EAX] <==到EAX
0167:00475CF4 MOV EDX,[004CDD04] <==
0167:00475CFA CMP EAX,[EDX] <==用内存4CDD04指向地址的值与EAX比较,记为*1*
0167:00475CFC JNZ 00475D05 <==**此处应不跳**
0167:00475CFE MOV EBX,01 <==移入注册标志
0167:00475D03 JMP SHORT 00475D07
0167:00475D05 XOR EBX,EBX
0167:00475D07 XOR EAX,EAX
0167:00475D09 POP EDX
0167:00475D0A POP ECX
0167:00475D0B POP ECX
0167:00475D0C MOV [FS:EAX],EDX
0167:00475D0F PUSH DWORD 00475D24
0167:00475D14 LEA EAX,[EBP-04]
0167:00475D17 CALL 004039B0
0167:00475D1C RET
0167:00475D1D JMP 004033D0
0167:00475D22 JMP SHORT 00475D14
0167:00475D24 MOV EAX,EBX
0167:00475D26 POP EBX
0167:00475D27 POP ECX
0167:00475D28 POP EBP
0167:00475D29 RET
通过以上代码分析,结合动态跟踪可知,只要*1*处比较等于零就OK了(制作破解版就是将这个
比较后的JNZ改成永远不跳),*1*处所比较的值就是分别由*2*两次调用产生的,只要两次调都返回
“A”值就成功了。继续进行第六步分析,以夺取最后胜利——“找注册码”;
6、革命尚未成功,壮士还需努力!!,继续深入*2*CALL,分析代码如下:
0167:00403EB8 TEST EAX,EAX
0167:00403EBA JZ 00403EFC
0167:00403EBC TEST EDX,EDX
0167:00403EBE JZ 00403EF1
0167:00403EC0 PUSH EBX
0167:00403EC1 PUSH ESI
0167:00403EC2 PUSH EDI
0167:00403EC3 MOV ESI,EAX
0167:00403EC5 MOV EDI,EDX <==EDI指向的串是根据你机器码产生的,记为*3*
0167:00403EC7 MOV ECX,[EDI-04] <==串长度入ECX
0167:00403ECA PUSH EDI
0167:00403ECB MOV EDX,[ESI-04] <==你输入的码长度入EDX
0167:00403ECE DEC EDX <== -1
0167:00403ECF JS 00403EEC
0167:00403ED1 MOV AL,[ESI] <==S/N的第一位到AL
0167:00403ED3 INC ESI <==ESI指向第二位
0167:00403ED4 SUB ECX,EDX <==串长度-(输入码长度-1)
0167:00403ED6 JNG 00403EEC <==不大于跳,不能跳
0167:00403ED8 REPNE SCASB <==搜索第一字符在串中位置
0167:00403EDA JNZ 00403EEC <==不等于0跳,不能跳
0167:00403EDC MOV EBX,ECX
0167:00403EDE PUSH ESI
0167:00403EDF PUSH EDI
0167:00403EE0 MOV ECX,EDX
0167:00403EE2 REPE CMPSB <==比较剩下四位字符是否相同
0167:00403EE4 POP EDI
0167:00403EE5 POP ESI
0167:00403EE6 JZ 00403EF4 <==跳走,进一步找出你输入注册码在串中所处位置
0167:00403EE8 MOV ECX,EBX
0167:00403EEA JMP SHORT 00403ED8
0167:00403EEC POP EDX
0167:00403EED XOR EAX,EAX
0167:00403EEF JMP SHORT 00403EF9
0167:00403EF1 XOR EAX,EAX
0167:00403EF3 RET
0167:00403EF4 POP EDX
0167:00403EF5 MOV EAX,EDI
0167:00403EF7 SUB EAX,EDX <==这行就是产生返回值,实际上它就是你输入的注册码在
串中的位置,此程序要求是10(十六进制是A)。
0167:00403EF9 POP EDI
0167:00403EFA POP ESI
0167:00403EFB POP EBX
0167:00403EFC RET
其实这段代码你不一定要看懂,实际上它就是找出你所输入注册码在根据你机器码产生的串中
的位置。
小 结:
这个程序要找出注册码还真要仔细分析才能得出:
我的序例号:1319019
*3*处串为:882628364 30494 47244625
那么从10起的5位数字就是注册码:30494
后 记:
有疑问请与我联系:hz.cy@163.net
附 则:
斗地主V4.0 Build378破解:UPX脱壳,将4A8274处四个字节改成B0 01 90 90 就成注册版。
相关视频
相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
热门文章 去除winrar注册框方法
最新文章
比特币病毒怎么破解 比去除winrar注册框方法
华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据
人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程
查看所有0条评论>>