System Mechanic一款强大的、屡次获奖的多功能系统维护工具,标准版包括以下功能。
1. 首先用你的Softice载入WINDOWS,用CTRL+D检查Softice是否可呼出,然后按F5退出Softice;
2. 运行System Mechanic V3.5i,进入注册框,在用户ID(USER ID)中输入:ddcrack(可随意输入),在序列号(Serial Number)中输入:12345-67890-1234567890(可随意输入);
3. 按CTRL+D呼出Softice,哇喔。。。!,死机了。怎么回事呢?是你的机有软件冲突的问题吗?非也!换了好几个机子还是一样,明白了,System Mechanic专门针对Softice做了手脚,这两个家伙一见面就会搞死系统。看来不能指望Softice了,怎么办呢?俗话说山不转水转,既然System Mechanic使用了ANTI-Softice技术,那我们就不用Softice,改用Trw2000, 总不会它也懂ANTI-Trw2000吧
4. 运行Trw2000,用"Browse"找到SysMechanic.exe,然后用"Load"载入System Mechanic,按F5暂时退出Trw2000;
5. 在System Mechanic的界面中选择"Enter Serial Number",在注册框的户ID(USER ID)中输入:ddcrack,序列号(Serial Number)中输入:12345-67890-1234567890 ;
6. 按CTRL+N呼出Trw2000,输入下面的指令:S 30:0 L FFFFFFFF 'ddcrack',回车 ;
7. 接下来Trw2000会给出一个地址XXXXXXXX(这个地址是不固定的),下指令:bpm xxxxxxxx,回车,然后按F5退出Trw2000 ;
8. 在System Mechanic的注册框中点击OK,然后System Mechanic会被Trw2000拦截住,进入Trw2000 ;
9. 下命令:bd * 暂停刚才的断点;
10. 按F12键8次,来到System Mechanic的领空:
...
0167:004333F3 RET←- 程序停留在这里。。。
0167:004333F4 PUSH EBX
0167:004333F5 MOV EBX,EAX
0167:004333F7 MOV EAX,EBX
0167:004333F9 CALL 00433344
0167:004333FE TEST AL,AL
...
11. 按F10键你会看到还是RET指令,继续按F10多次,直到跳出那些无用的RET指令,来到下面的地方停下来:
...
0167:00497090 MOV EAX,[EBP-14]
0167:00497093 MOV EDX,[EBP-04]
0167:00497096 CALL 0048D894
0167:0049709B TEST AL,AL
0167:0049709D JZ 004970AE
0167:0049709F CALL 0048D444
0167:004970A4 CALL 00491E80
0167:004970A9 JMP 0049720D
0167:004970AE CALL 00491BE8
0167:004970B3 TEST AL,AL
0167:004970B5 JZ 004970C1
0167:004970B7 CALL 00491E80
0167:004970BC JMP 0049720D
...
12. 首先按F10两次,让程序走过前两条指令:
0167:00497090 MOV EAX,[EBP-14]
0167:00497093 MOV EDX,[EBP-04]
停留在下面的地方:
0167:00497096 CALL 0048D894
13. 用 d eax 和 d edx 看看里面有些什么?哈哈。。。看见什么了?eax 指向'ddcrack'(输入的用户ID),edx 指向'12345-67890-1234567890'(输入的序列号)。
分析一下:程序首先将用户ID→'ddcrack'的地址放入eax,将序列号→'12345-67890-1234567890'的地址放入edx,然后经过一个子程序调用CALL 0048D894,将结果返回AL,接着根据AL的值判断程序的走向。这个CALL很可能就是验证用户ID和序列号正确与否的关键所在!如果是的话,那么到底AL返回的值是什么才说明输入的用户ID和序列号是正确的呢?我们暂时还不能肯定这个CALL的作用和AL的返回值的关系,只能先试探一下;
注意:此处开始进入特殊区域(让你走进误区并且掉入陷阱^_^)!
14. 按F8进入这个CALL 0048D894里面,按F10多次,来下面的程序处停下:
0167:0048D8C4 LEA EDX,[EBP-OC]
0167:0048D8C7 MOV EAX,[EBP-O4]←-EAX指向'ddcrack'
0167:0048D8CA CALL 00407EAC
0167:0048D8CF MOV EAX,[EBP-OC]←-EAX指向'DDCRACK'
0167:0048D8D2 MOV EDX,0048E7FC←-EDX指向'PROF.X [EVC]'
0167:0048D8D7 CALL 00403F8C
0167:0048D8DC JZ 0048E7C7
0167:0048D8E2 LEA EDX,[EBP-OC]
0167:0048D8E5 MOV EAX,[EBP-O4]←-EAX指向'ddcrack'
0167:0048D8E8 CALL 00407EAC
0167:0048D8ED MOV EAX,[EBP-OC]←-EAX指向'DDCRACK'
0167:0048D8F0 MOV EDX,0048E814←-EDX指向'COKEBOTTLE99'
0167:0048D8F5 CALL 00403F8C
0167:0048D8FA JZ 0048E7C7
...
下面还有很长的一段程序都是如此的。。。
...
注意:走进误区...!
分析一下:在0167:0048D8C7处eax指向输入的用户ID'ddcrack', 然后经过0167:0048D8CA处的CALL 00407EAC将其转换成大写'DDCRACK';0167:0048D8D2处的CALL 00403F8C很明显是将'DDCRACK'与另外一个字符串比较'PROF.X [EVC]',接着0167:0048D8DC处的JZ 0048E7C7根据刚才比较的结果判断决定程序的走向,如果相等则程序跳到0167:0048E7C7。我们可以看到后面很长一段程序都是在将'DDCRACK'与另外一个字符串相比较,从Trw2000的数据窗中可以看到很多很多的字符串,包括名字、数字串和EMAIL地址等等,这些字符串都要和'DDCRACK'相比较,直到相等为止。想一想:0167:0048D8D2处的CALL将我们输入的用户ID转化成大写后和程序中的特定字符串相比较,那么我们是否可以认为那些字符串就是真正的用户ID呢?
15. 为了验证刚才的猜测,我们姑且将'PROF.X [EVC]'作为用户ID, 序列号仍然用'12345-67890-1234567890',然后重复前面的步骤来到下面的地方停下,即程序走到0167:0048D8C4 LEA EDX,[EBP-OC]处。接着连续按F10在0167:0048D8DC JZ 0048E7C7处停下,因为我们输入的用户ID是'PROF.X [EVC]',而程序中的字符串也是'PROF.X [EVC]',所以再按一次F10,程序应该会跳到0167:0048E7C7去,如下所示:
0167:0048D8C4 LEA EDX,[EBP-OC]←-程序停在这里
0167:0048D8C7 MOV EAX,[EBP-O4]←-EAX指向'PROF.X [EVC]' (我们输入的)
0167:0048D8CA CALL 00407EAC
0167:0048D8CF MOV EAX,[EBP-OC]←-EAX指向'PROF.X [EVC]' (进行大写转换)
0167:0048D8D2 MOV EDX,0048E7FC←-EDX指向'PROF.X [EVC]' (程序中的字符串)
0167:0048D8D7 CALL 00403F8C
0167:0048D8DC JZ 0048E7C7←-此处标志位ZF为零,程序直接跳到0048E7C7去。
...
16. 暂且不用管上面JZ 0048E7C7以后的程序,连续按F10多次,让程序返回从0167:00497096 CALL 0048D894中返回,停在它下面的语句上,既在下面的地方停下:
0167:0049709B TEST AL,AL←-程序停在这里
0167:0049709D JZ 004970AE
0167:0049709F CALL 0048D444
0167:004970A4 CALL 00491E80
0167:004970A9 JMP 0049720D
0167:004970AE CALL 00491BE8
0167:004970B3 TEST AL,AL
0167:004970B5 JZ 004970C1
0167:004970B7 CALL 00491E80
0167:004970BC JMP 0049720D
...
17. 按F10一下,走过0167:0049709B TEST AL,AL,停在0167:0049709D JZ 004970AE上。因为此时AL为非零值,经过TEST AL,AL后标志位ZF不为零,所以我们按一下F10执行JZ 004970AE时程序会顺序执行来到JZ 004970AE的下一句:
0167:0049709F CALL 0048D444←- 程序停留在这里
0167:004970A4 CALL 00491E80
0167:004970A9 JMP 0049720D
...
18. 上面的两个CALL之后就有一个JMP 0049720D,它们有何作用呢?按一下F10,执行 CALL 0048D444 ,此时 System Mechanic 弹出一个窗口,告诉它检测到无效的许可信息(Licence Information);再按一下F10,执行 CALL 00491E80,该死的,机子死掉了!看来刚才那个 JZ 004970AE 是一定要跳的,否则只有一命呜呼了^_^;想想为什么在用户ID中输入'PROF.X [EVC]'后System Mechanic会报告有非法Licence而把系统搞死呢?从现在来看还不太明朗,前面不是提到System Mechanic中有很多的字符串吗?我们不妨再试一下,将'COKEBOTTLE99'作为用户ID,序列号仍为'12345-67890-1234567890',重复刚才的步骤,然后再考虑;
19 重新启动你的电脑(因为可恶的System Mechanic已将你的系统搞死了^_^ !),重复前面的步骤,让程序走到刚才那条跳转指令的地方停下:
0167:0049709D JZ 004970AE←- 程序停留在这里
0167:0049709F CALL 0048D444
0167:004970A4 CALL 00491E80
0167:004970A9 JMP 0049720D
...
此时标志位ZF的值为非零,如果再往下走的话,System Mechanic会再次搞死系统的!你可以在此处下命令:RFL Z 将标志位清零,这样的话程序会跳到004970AE去,避开那两个可恶的CALL。接着按F5就可以安全的返回WINDOWS,System Mechanic会报告你输入了无效的用户ID和序列号,暂时关闭System Mechanic ;
注意:掉进陷阱...!
20. 到这里我们应该好好的想一下了:连续输入两个System Mechanic程序中的字符串'PROF.X [EVC]'和'COKEBOTTLE99'后程序都将我们引向死机的地方,那么我们很可能想到这是System Mechanic设下的障碍。那些字符串里应该有正确的用户ID,如果输对了程序就会跳过那两个可恶的CALL;如果输错了System Mechanic就会毫不犹豫的搞死系统!这样的话问题就来了,既然程序中有如此多的字符串,我们如何知道哪个是正确的呢?如果要一个个的试探,那会死多少次机呀!真是不敢想象啊!所以只有一个办法,猜^_^(需要感觉和运气的时候到了)。在Trw2000中用命令:LINES 48将显示面积尽量扩大,然后直接观察数据区,看看有没有比较可疑的。前面用了两个字符串都失败了,在内存中可以看到有一串数字'81708-ND059-4019484694'很特别(因为只有这一个嘛!),想想既然是用户ID很可能会是一串数字呦!所以何不如用这串数字当作用户ID呢?好的,重新开始前面的步骤,用户ID为'81708-ND059-4019484694',序列号为'12345-67890-1234567890',重新走到第19步骤的地方:
0167:0049709D JZ 004970AE←- 程序停留在这里
0167:0049709F CALL 0048D444
0167:004970A4 CALL 00491E80
0167:004970A9 JMP 0049720D
0167:004970AE CALL 00491BE8
0167:004970B3 TEST AL,AL
0167:004970B5 JZ 004970C1
0167:004970B7 CALL 00491E80
0167:004970BC JMP 0049720D
...
21. 此刻标志位为零,意味着什么呢?程序将会跳到004970AE,避开下面两个该死的CALL,成功了(如果运气不好的话,要猜多少次才能出来呀)!!!那串数字就是正确的用户ID(其实并非如此,只是歪打正着,落入陷阱又侥幸逃脱而已^_^,下文会解说的。。。)!
注意:此处退出特殊区域(虽然返回安全地带,但却是将错就错了^_^)!
22. 在0167:0049709D JZ 004970AE指令后一直按F10,走到下面的地方停下:
...
0167:00497130 MOV EAX,[EBP-14]
0167:00497133 LEA ECX,[EBP-08]
0167:00497136 MOV EDX,00000001
0167:0049713B CALL 0048F898
0167:00497140 MOV EAX,[EBP-08]
0167:00497143 MOV EDX,[EBP-04]
0167:00497146 CALL 00403F8C
0167:0049714B JNZ 00497152
...
23. 为什么在这里停下呢?因为这个地方比较可疑:先将eax和edx分别赋予某个值,然后调用子程序,根据返回值决定程序的走向。用F10走到0167:0049713B CALL 0048F898停下,然后用 d eax 和 d ecx 看看,eax 指向上面输入的用户ID即'81708-ND059-4019484694',是不是很可疑呀!
24. 按F10走到0167:00497146 CALL 00403F8C停下,用 d eax 和 d edx 看看。发现什么了?eax 指向一串数字:74697-ST949-2115110116,而 edx 则指向我们输入的序列号:12345-67890-1234567890,如下所示:
...
0167:00497130 MOV EAX,[EBP-14]←-EAX指向'81708-ND059-4019484694'
0167:00497133 LEA ECX,[EBP-08]
0167:00497136 MOV EDX,00000001
0167:0049713B CALL 0048F898
0167:00497140 MOV EAX,[EBP-08]←-EAX指向'74697-ST949-2115110116'
0167:00497143 MOV EDX,[EBP-04]←-EDX指向'12345-67890-1234567890'
0167:00497146 CALL 00403F8C
0167:0049714B JNZ 00497152
...
那串数字应该就是真正的序列号吧!^_^ 赶紧把它写在纸上;
23. 按F10走过后面的两条指令:
0167:00497146 CALL 00403F8C
0167:0049714B JNZ 00497152
然后程序来到下面的地方:
0167:0049714D MOV ESI,00000001
0167:00497152 LEA EDX,[EBP-14]
0167:00497155 MOV EAX,[EBX+000001DC]
0167:0049715B CALL 0042346C
0167:00497160 MOV EAX,[EBP-14]←-EAX指向'81708-ND059-4019484694'
0167:00497163 LEA ECX,[EBP-08]
0167:00497166 MOV EDX,00000002
0167:0049716B CALL 0048F898
0167:00497170 MOV EAX,[EBP-08]←-EAX指向'80758-PR100-8111216112'
0167:00497173 MOV EDX,[EBP-04]←-EDX指向'12345-67890-1234567890'
0167:00497176 CALL 00403F8C
0167:0049717B JNZ 00497182
0167:0049717D MOV ESI,00000002
0167:00497182 LEA EDX,[EBP-14]
0167:00497185 MOV EAX,[EBX+000001DC]
0167:0049718B CALL 0042346C
0167:00497190 MOV EAX,[EBP-14]←-EAX指向'81708-ND059-4019484694'
0167:00497193 LEA ECX,[EBP-08]
0167:00497196 MOV EDX,00000003
0167:0049719B CALL 0048F898
0167:004971A0 MOV EAX,[EBP-08]←-EAX指向'69647-ND898-7010115011'
0167:004971A3 MOV EDX,[EBP-04]←-EDX指向'12345-67890-1234567890'
0167:004971A6 CALL 00403F8C
0167:004971AB JNZ 00497182
0167:004971AD MOV ESI,00000003
...
和上一个步骤相似的,你可以发现另外两个序列号,同样把它们记下来!很显然,CALL 0048F898的作用就是将我们输入的用户ID计算出一个序列号,然后下面的CALL将这个序列号和真正的序列号相比较。
24. 按F5退出Trw2000,然后直接在 System Mechanic 中选择注册,将用户ID(81708-ND059-4019484694)和序列号(74697-ST949-2115110116或80758-PR100-8111216112或69647-ND898-7010115011)输入,点击OK键,出现了注册成功的画面,搞定了,哈哈。。。!
揭开谜底:
到现在我们得到了合法的用户ID和序列号并且已经注册,那么是不是我们已经破解了System Mechanic呢?非也!其实我们并没有真正地破解它,反倒是被System Mechanic引向了误区,但是又歪打正着的走出了不小心掉进的陷阱!也许有人不明白了:为什么已经拿到正确的用户ID和序列号却只是侥幸而已呢?难道你不认为用户ID和序列号的样式结构一模一样有点怪异吗?让我一步一步的揭开谜底吧:
25. 还记得第13步骤吗?我们在eax中看到了输入的用户ID'ddcrack',在edx中看到了输入的序列号'12345-67890-1234567890' :
...
0167:00497090 MOV EAX,[EBP-14]←-EAX指向'ddcrack'
0167:00497093 MOV EDX,[EBP-04]←-EDX指向'12345-67890-1234567890'
0167:00497096 CALL 0048D894
0167:0049709B TEST AL,AL
0167:0049709D JZ 004970AE
0167:0049709F CALL 0048D444←-弹出窗口告诉发现无效的许可信息
0167:004970A4 CALL 00491E80←-使系统死掉的CALL
0167:004970A9 JMP 0049720D
0167:004970AE CALL 00491BE8
0167:004970B3 TEST AL,AL
0167:004970B5 JZ 004970C1
0167:004970B7 CALL 00491E80←-使系统死掉的CALL
0167:004970BC JMP 0049720D
...
接着我们怀疑下面的那个CALL 0048D894很可能是判断用户ID和序列号正确与否的地方,于是就用F8跟进了这个CALL里去;
26. 现在我们换一种思维方式,我们不用F8进入0167:00497096处的CALL 0048D894,改用F10直接饶过这个CALL。程序走到0167:0049709B TEST AL,AL后,发现什么?虽然我们原本输入的用户ID是'ddcrack',但是为什么AL的值确是零呢?这意味着程序到了0167:0049709D JZ 004970AE后会跳到004970AE去,而不会执行那两个该死的CALL。这是怎么回事呢?难道程序里刚好有'DDCRACK'(因为CALL 0048D894中将'ddcrack'转化成大写再比较的)这个字符串吗?这当然是不可能的(不信的话可以在System Mechanic中搜一搜^_^)。那为什么输入程序中的字符串'81708-ND059-4019484694'作为用户ID是对的,而其它的字符串都不行,只能走向死机的深渊呢?
难道'81708-ND059-4019484694'真的是正确的用户ID?如果这样的话为什么我们随便输入的'ddcrack'也能安全的通过这个CALL呢?也许'ddcrack'在这个CALL可以过去不死机,但并不能代表它也是合法的用户ID呀?(因为我们并没有用'ddcrack'这个ID成功注册过呀!);
27. 为了验证用户ID'ddcrack'的合法性,我们先用'ddcrack'作用户ID,用'12345-67890-1234567890'作为序列号,来到刚才取序列号的地方:
...
0167:00497130 MOV EAX,[EBP-14]←-EAX指向'ddcrack'
0167:00497133 LEA ECX,[EBP-08]
0167:00497136 MOV EDX,00000001
0167:0049713B CALL 0048F898
0167:00497140 MOV EAX,[EBP-08]←-EAX指向'86888-ST195-1786565459'
0167:00497143 MOV EDX,[EBP-04]←-EDX指向'12345-67890-1234567890'
0167:00497146 CALL 00403F8C
0167:0049714B JNZ 00497152
0167:0049714D MOV ESI,00000001
0167:00497152 LEA EDX,[EBP-14]
0167:00497155 MOV EAX,[EBX+000001DC]
0167:0049715B CALL 0042346C
0167:00497160 MOV EAX,[EBP-14]←-EAX指向'ddcrack'
0167:00497163 LEA ECX,[EBP-08]
0167:00497166 MOV EDX,00000002
0167:0049716B CALL 0048F898
0167:00497170 MOV EAX,[EBP-08]←-EAX指向'92949-PR710-7747179310'
0167:00497173 MOV EDX,[EBP-04]←-EDX指向'12345-67890-1234567890'
0167:00497176 CALL 00403F8C
0167:0049717B JNZ 00497182
0167:0049717D MOV ESI,00000002
0167:00497182 LEA EDX,[EBP-14]
0167:00497185 MOV EAX,[EBX+000001DC]
0167:0049718B CALL 0042346C
0167:00497190 MOV EAX,[EBP-14]←-EAX指向'ddcrack'
0167:00497193 LEA ECX,[EBP-08]
0167:00497196 MOV EDX,00000003
0167:0049719B CALL 0048F898
0167:004971A0 MOV EAX,[EBP-08]←-EAX指向'81838-ND690-6636060509'
0167:004971A3 MOV EDX,[EBP-04]←-EDX指向'12345-67890-1234567890'
0167:004971A6 CALL 00403F8C
0167:004971AB JNZ 00497182
0167:004971AD MOV ESI,00000003
...
现在我们用'ddcrack'的用户ID得到了3个序列号:86888-ST195-1786565459,92949-PR710-7747179310和81838-ND690-6636060509
28. 按F5退出Trw2000,然后直接在 System Mechanic 中选择注册,将用户ID(ddcrack)和序列号(86888-ST195-1786565459或92949-PR710-7747179310或81838-ND690-6636060509)输入,注册成功了!
29. 既然'ddcrack'也是合法用户ID,那么是碰巧吗?你可以随意输入其它的名称,然后依次试试,会发现都可以用。那为什么我们随意输入的用户ID都可以,惟独在 System Mechanic 程序的一大堆字符串中只有'81708-ND059-4019484694'是对的,其它的都是错的,还会把系统搞死呢?让我们看看'81708-ND059-4019484694'有什么诡异之处吧:
30. 我们用'ddcrack'作用户ID,用'12345-67890-1234567890'作为序列号,来到第11步骤那个CALL,并按F8进如这个CALL。接着下命令:s 30:0 l ffffffff '81708-ND059-4019484694',等Trw2000找到后返回一个地址XXXXXXXX时,下命令:bpm xxxxxxxx,目的是在程序对这个字符串操作的时候中断(这样能很快找到调用'81708-ND059-4019484694'的地方,不用一步一步的去找)。再按F5,程序会中断在下面的地方:
...
0167:00403fB9 CMP ECX,EBX←-程序停在这里
0167:00403fBB JNZ 00404015
0167:00403fBD DEC EDX
0167:00403fBE JZ 00403FD5
...
31.按F10多次退出这个CALL,来到下面的地方:
...
0167:0048DB58 MOV EAX,[EBP-08]
0167:0048DB5B MOV EDX,0048E908
0167:0048DB60 CALL 00403F8C
0167:0048DB65 JZ 0048E7C7←-程序停在这里
0167:0048DB6B LEA EDX,[EBP-0C]
0167:0048DB5E MOV EAX,[EBP-08]
...
32. 将鼠标移到0167:0048DB58 MOV EAX,[EBP-08]处,单击左键,然后按F9在此设个断点(因为这上面才是开始对'81708-ND059-4019484694'进行操作的地方),之后按F5退出Trw2000;
33. 在 System Mechanic 的注册框中点击OK,程序会中断在下面的地方(即刚才设断的地方):
...
0167:0048DB58 MOV EAX,[EBP-08]←-程序停在这里
0167:0048DB5B MOV EDX,0048E908
0167:0048DB60 CALL 00403F8C
0167:0048DB65 JZ 0048E7C7
0167:0048DB6B LEA EDX,[EBP-0C]
0167:0048DB5E MOV EAX,[EBP-08]
...
34. 先用:bd * 暂停刚才的断点,然后按F10走到0167:0048DB60 CALL 00403F8C处,用 d eax 和 d edx 查看。我们可以看到edx指向'81708-ND059-4019484694',eax指向的并不是用户ID 'ddcrack',而是输入的序列号'12345-67890-1234567890'。即此字符串程序是将它和我们输入的序列号相比较,如果相等的话程序又会走向那两个该死的CALL。我们错误的把错误的序列号当作用户ID来输入,所以没有走向那两个CALL。如果此时我们输入任意的用户ID,而序列号输入'81708-ND059-4019484694'的话,程序就会走向死亡!
35. 现在让我们来总结一下,首先用户ID是可以随便输入的,而不是只能输入'81708-ND059-4019484694'(上面被我们阴阳颠倒的错把序列号当用户ID了!),其次序列号有三种形式:XXXXX-STXXX-XXXXXXXXXXX, XXXXX-PRXXX-XXXXXXXXXXX和XXXXX-NDXXX-XXXXXXXXXXX 。( System Mechanic分为专业版和企业版,其中又分单用户和多用户,XXXXX-NDXXX-XXXXXXXXXXX的Licence注册后功能最全,具体情况请看联机帮助。)至于0167:00497096处的CALL 0048D894的作用是进行黑名单检测(用户ID黑名单:PROF.X [EVC],COKEBOTTLE99,COKE2000。。。很多很多;序列号黑名单:81708-ND059-4019484694(好象就这一个,不太肯定,因为字符串太多,很难看清),这个子程序一旦发现黑名单上的用户ID或者序列号后就会弹出窗口警告发现非法Licence并且让系统死掉;
36. 善后工作,记得在Trw2000中用:bc * 清除断点;
37. 结束语:
至此本次破解实战结束,也许你会奇怪为什么我要故意将大家引向歧途呢?其实在0167:00497096时用F8进入CALL 0048D894里面是很合乎情理的(当然如果当时没有进去也许就会省掉许多麻烦,但是也不会把程序搞得很明白),而且进入CALL 0048D894之后又错误地认为在那些字符串中一定有正确的用户ID,而其它的用户ID都是用来掩人耳目,迷惑解密者的跟踪,我觉得这也是很自然、很容易出现的想法。所以我认为在解密过程中上面的弯路是非常可能遇到的,因为在破解之前我们对这个程序还不是很了解,同时又被黑名单(当时可想不到喔!)里那些字符串所迷惑,很容易就掉入陷阱里去了。这篇文章作为抛砖引玉,希望对大家有些帮助,如有什么不对的地方请指正。