【文章标题】: 不完全破解诸葛起名 + 算法分析
【文章作者】: KAN-LI
【作者邮箱】: TOM8147@HOTMAIL.COM
【作者主页】: 看雪论坛
【作者QQ号】: 591258070
【软件名称】: 诸葛起名 1。9
【软件大小】: 自己看属性吧
【下载地址】: 天空软件
【加壳方式】: ASPack 2.12
【编写语言】: Microsoft Visual Basic 6.0
【使用工具】: OD ,PEID
【操作平台】: WINXP SP2
【软件介绍】: 算命,起名 的东西
【作者声明】: 只是感兴趣,没有其他目的
--------------------------------------------------------------------------------
【详细过程】
今天下了个软件,想看看它的算法,一跟之下,痛苦啊,开始用万能断点断下后,出现用户名,本想算法就在附近,谁知道后来
的路还长呢。真是跑完一个 CALL,又一个 CALL ,(现在破解真难啊 )说真的不是我说作者,好长的计算确出现明码,我差点就想
作个内存注册机算了,但后来一下还是跟跟吧,注册机也不想发了,开发一个软件不容易啊,我只是学习而尔
不过这个算法部分真的长气,不信你看看(我尽量省略了 N 多的代码,不然。。。。。。。)
软件的壳很弱,手脱很容易就完了
005F6F05 . FF15 9C124000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeO>; 这里下段(经简略了N多步,来到这里)
005F6F0B . 66:39BD 00FFF>CMP WORD PTR SS:[EBP-100],DI ; 这里检查你有没有输入用户名
005F6F12 74 0A JE SHORT 11.005F6F1E ;没你就完了
005F6F14 . B8 ACDE4300 MOV EAX,11.0043DEAC
005F6F19 . E9 9B010000 JMP 11.005F70B9
005F6F1E > 8B45 DC MOV EAX,DWORD PTR SS:[EBP-24]
005F6F21 . 50 PUSH EAX
005F6F22 . FF15 2C104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaLenBs>; msvbvm60.__vbaLenBstr
005F6F28 . 85C0 TEST EAX,EAX
005F6F2A . 75 0A JNZ SHORT 11.005F6F36
005F6F2C . B8 C4DE4300 MOV EAX,11.0043DEC4
005F6F31 . E9 83010000 JMP 11.005F70B9
005F6F36 > 8D45 DC LEA EAX,DWORD PTR SS:[EBP-24]
005F6F39 . 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28]
005F6F3C . 50 PUSH EAX
005F6F3D . 51 PUSH ECX
005F6F3E . E8 5DF9FEFF CALL 11.005E68A0 ; 关键CALL
005F6F43 . 66:3D FFFF CMP AX,0FFFF
005F6F47 0F85 67010000 JNZ 11.005F70B4 ; 爆破点,爆破成功但有自检(没时间看它)
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
F7 跟进 005F6F3D ,这里又省略 N 多代码
005E6913 . 50 PUSH EAX
005E6914 . E8 174C1200 CALL 11.0070B530 ; 关键 CALL
005E6919 . 8BD0 MOV EDX,EAX
005E691B . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
005E691E . FF15 44124000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrMo>; msvbvm60.__vbaStrMove
005E6924 . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
005E6927 . FF15 98124000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeS>; msvbvm60.__vbaFreeStr
005E692D . 8B0D 1CD37000 MOV ECX,DWORD PTR DS:[70D31C] ; 注册码
005E6933 . 8B17 MOV EDX,DWORD PTR DS:[EDI]
005E6935 . 51 PUSH ECX
――――――――――――――――――――――――――――――――――――――――――――――――――――――
F7 跟进 005E6913 ,代码多啊 ,看见都害怕
0070B5A3 . FF15 2C104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaLenBs>; 计算机器码位数
0070B5A9 . 8BC8 MOV ECX,EAX
0070B5AB . FF15 28114000 CALL DWORD PTR DS:[<&msvbvm60.__vbaI2I4>>; msvbvm60.__vbaI2I4
0070B5B1 . BA 14E94E00 MOV EDX,11.004EE914 ; 字符串-表
0070B5B6 . 8D4D A0 LEA ECX,DWORD PTR SS:[EBP-60]
0070B5B9 . 8BF8 MOV EDI,EAX
0070B5BB . FF15 DC114000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrCo>; msvbvm60.__vbaStrCopy
0070B5C1 . 8B4D A0 MOV ECX,DWORD PTR SS:[EBP-60]
0070B5C4 . 8D55 8C LEA EDX,DWORD PTR SS:[EBP-74]
0070B5C7 . 51 PUSH ECX
0070B5C8 . 52 PUSH EDX
0070B5C9 . FF15 1C124000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrTo>; msvbvm60.__vbaStrToAnsi
0070B5CF . 50 PUSH EAX
0070B5D0 . 8D4D A4 LEA ECX,DWORD PTR SS:[EBP-5C]
0070B5D3 . 0FBFC7 MOVSX EAX,DI
0070B5D6 . 50 PUSH EAX
0070B5D7 . 51 PUSH ECX
0070B5D8 . 6A 20 PUSH 20
0070B5DA . FF15 C4104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrFi>; msvbvm60.__vbaStrFixstr
0070B5E0 . 8B3D 44124000 MOV EDI,DWORD PTR DS:[<&msvbvm60.__vbaSt>; msvbvm60.__vbaStrMove
0070B5E6 . 8BD0 MOV EDX,EAX
0070B5E8 . 8D4D 98 LEA ECX,DWORD PTR SS:[EBP-68]
0070B5EB . FFD7 CALL EDI ; <&msvbvm60.__vbaStrMove>
0070B5ED . 8D55 94 LEA EDX,DWORD PTR SS:[EBP-6C]
0070B5F0 . 50 PUSH EAX
0070B5F1 . 52 PUSH EDX
0070B5F2 . FF15 1C124000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrTo>; msvbvm60.__vbaStrToAnsi
0070B5F8 . 50 PUSH EAX
0070B5F9 . 8B03 MOV EAX,DWORD PTR DS:[EBX]
0070B5FB . 8D4D 9C LEA ECX,DWORD PTR SS:[EBP-64]
0070B5FE . 50 PUSH EAX
0070B5FF . 51 PUSH ECX
0070B600 . FF15 1C124000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrTo>; msvbvm60.__vbaStrToAnsi
0070B606 . 50 PUSH EAX
0070B607 . E8 ACC3D1FF CALL 11.004279B8
0070B60C . 8985 08FFFFFF MOV DWORD PTR SS:[EBP-F8],EAX
0070B612 . FF15 70104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaSetSy>; msvbvm60.__vbaSetSystemError
0070B618 . 8B55 9C MOV EDX,DWORD PTR SS:[EBP-64]
0070B61B . 52 PUSH EDX
0070B61C . 53 PUSH EBX
0070B61D . 8B1D 68114000 MOV EBX,DWORD PTR DS:[<&msvbvm60.__vbaSt>; msvbvm60.__vbaStrToUnicode
0070B623 . FFD3 CALL EBX ; <&msvbvm60.__vbaStrToUnicode>
0070B625 . 8B45 94 MOV EAX,DWORD PTR SS:[EBP-6C]
0070B628 . 8D4D 90 LEA ECX,DWORD PTR SS:[EBP-70]
0070B62B . 50 PUSH EAX
0070B62C . 51 PUSH ECX
0070B62D . FFD3 CALL EBX
0070B62F . 8D55 A4 LEA EDX,DWORD PTR SS:[EBP-5C]
0070B632 . 50 PUSH EAX
0070B633 . 52 PUSH EDX
0070B634 . 6A 20 PUSH 20
0070B636 . FF15 64104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaLsetF>; msvbvm60.__vbaLsetFixstr
0070B63C . 8B45 8C MOV EAX,DWORD PTR SS:[EBP-74]
0070B63F . 8D4D A0 LEA ECX,DWORD PTR SS:[EBP-60]
0070B642 . 50 PUSH EAX
0070B643 . 51 PUSH ECX
0070B644 . FFD3 CALL EBX
0070B646 . 8B95 08FFFFFF MOV EDX,DWORD PTR SS:[EBP-F8]
0070B64C . 33DB XOR EBX,EBX
0070B64E . 3BD6 CMP EDX,ESI
0070B650 . 8D55 8C LEA EDX,DWORD PTR SS:[EBP-74]
0070B653 . 8D45 90 LEA EAX,DWORD PTR SS:[EBP-70]
0070B656 . 52 PUSH EDX
0070B657 . 8D4D 94 LEA ECX,DWORD PTR SS:[EBP-6C]
0070B65A . 50 PUSH EAX
0070B65B . 8D55 98 LEA EDX,DWORD PTR SS:[EBP-68]
0070B65E . 51 PUSH ECX
0070B65F . 8D45 9C LEA EAX,DWORD PTR SS:[EBP-64]
0070B662 . 52 PUSH EDX
0070B663 . 0F95C3 SETNE BL
0070B666 . 50 PUSH EAX
0070B667 . 6A 05 PUSH 5
0070B669 . F7DB NEG EBX
0070B66B . FF15 EC114000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeS>; msvbvm60.__vbaFreeStrList
0070B671 . 83C4 18 ADD ESP,18
0070B674 . 66:3BDE CMP BX,SI
0070B677 . 0F84 80000000 JE 11.0070B6FD
0070B67D . 8D4D A4 LEA ECX,DWORD PTR SS:[EBP-5C]
0070B680 . 51 PUSH ECX
0070B681 . 6A 20 PUSH 20
0070B683 . FF15 C4104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrFi>; msvbvm60.__vbaStrFixstr
0070B689 . 8BD0 MOV EDX,EAX
0070B68B . 8D4D 9C LEA ECX,DWORD PTR SS:[EBP-64]
0070B68E . FFD7 CALL EDI
0070B690 . 8D55 9C LEA EDX,DWORD PTR SS:[EBP-64]
0070B693 . 52 PUSH EDX
0070B694 . E8 B7FBFFFF CALL 11.0070B250 ; 又一个要进入的 CALL,晕
_______________________________________________________________________________________________________________________
不用说又是 F7 跟进 0070B694 了,千万别说苦(自愿的),不用说有省略 NNNNNNN 多的代码
0070B35A > /66:3BBD 50FFF>CMP DI,WORD PTR SS:[EBP-B0] ;这是一个循环
0070B361 . |0F8F A3000000 JG 11.0070B40A
0070B367 . |8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
0070B36A . |8D45 C8 LEA EAX,DWORD PTR SS:[EBP-38]
0070B36D . |0FBFCF MOVSX ECX,DI
0070B370 . |8955 90 MOV DWORD PTR SS:[EBP-70],EDX
0070B373 . |50 PUSH EAX
0070B374 . |8D55 88 LEA EDX,DWORD PTR SS:[EBP-78]
0070B377 . |51 PUSH ECX
0070B378 . |8D45 B8 LEA EAX,DWORD PTR SS:[EBP-48]
0070B37B . |52 PUSH EDX
0070B37C . |50 PUSH EAX
0070B37D . |C745 D0 01000>MOV DWORD PTR SS:[EBP-30],1
0070B384 . |C745 C8 02000>MOV DWORD PTR SS:[EBP-38],2
0070B38B . |C745 88 08400>MOV DWORD PTR SS:[EBP-78],4008
0070B392 . |FF15 F4104000 CALL DWORD PTR DS:[<&msvbvm60.rtcMidChar>; msvbvm60.rtcMidCharVar
0070B398 . |8D4D B8 LEA ECX,DWORD PTR SS:[EBP-48]
0070B39B . |51 PUSH ECX
0070B39C . |FF15 28104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrVa>; msvbvm60.__vbaStrVarMove
0070B3A2 . |8BD0 MOV EDX,EAX
0070B3A4 . |8D4D E0 LEA ECX,DWORD PTR SS:[EBP-20]
0070B3A7 . |FFD6 CALL ESI
0070B3A9 . |8D55 B8 LEA EDX,DWORD PTR SS:[EBP-48]
0070B3AC . |8D45 C8 LEA EAX,DWORD PTR SS:[EBP-38]
0070B3AF . |52 PUSH EDX
0070B3B0 . |50 PUSH EAX
0070B3B1 . |6A 02 PUSH 2
0070B3B3 . |FFD3 CALL EBX
0070B3B5 . |83C4 0C ADD ESP,0C
0070B3B8 . |8D55 88 LEA EDX,DWORD PTR SS:[EBP-78]
0070B3BB . |8D4D E0 LEA ECX,DWORD PTR SS:[EBP-20]
0070B3BE . |C745 88 08400>MOV DWORD PTR SS:[EBP-78],4008
0070B3C5 . |52 PUSH EDX
0070B3C6 . |894D 90 MOV DWORD PTR SS:[EBP-70],ECX
0070B3C9 . |FF15 24114000 CALL DWORD PTR DS:[<&msvbvm60.rtcIsNumer>; msvbvm60.rtcIsNumeric
0070B3CF . |66:85C0 TEST AX,AX
0070B3D2 . |74 15 JE SHORT 11.0070B3E9
0070B3D4 . |8B45 DC MOV EAX,DWORD PTR SS:[EBP-24]
0070B3D7 . |8B4D E0 MOV ECX,DWORD PTR SS:[EBP-20]
0070B3DA . |50 PUSH EAX
0070B3DB . |51 PUSH ECX
0070B3DC . |FF15 58104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrCa>; 可疑
0070B3E2 . |8BD0 MOV EDX,EAX ; 这里会产生每次累加的数值
0070B3E4 . |8D4D DC LEA ECX,DWORD PTR SS:[EBP-24]
0070B3E7 . |FFD6 CALL ESI
0070B3E9 > |B8 01000000 MOV EAX,1 ; 367174231585435 ,我机器上的,不过下面截取后会变为 36717423
0070B3EE . |66:03C7 ADD AX,DI ;做下一轮的计算
0070B3F1 . |0F80 2F010000 JO 11.0070B526
0070B3F7 . |8BF8 MOV EDI,EAX
0070B3F9 .^\E9 5CFFFFFF JMP 11.0070B35A ; 这里跳回
;当你跑完上面这个 CALL,你已经死了半截了,来到下面
0070B6E4 . FF15 14104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaStrI4>; 产生注册码 进
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
F7 进入了 0070B6E4 后,别以为完了,还有 CALL 你玩呢
73475987 FF15 B01A3973 CALL DWORD PTR DS:[<&OLEAUT32.#110>] ; 进入吧
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――-
进入后当然不那么容易看到最后的结果(算法呢)
7711C7AB . E8 1D000000 CALL OLEAUT32.7711C7CD ; 一个一个又一个,晕
――――――――――――――――――――――――――――――――――――――――――――――――――-
;进入后来到下面
7711C7CD $ 8BFF MOV EDI,EDI
7711C7CF /. 55 PUSH EBP
7711C7D0 |. 8BEC MOV EBP,ESP
7711C7D2 |. 33C0 XOR EAX,EAX
7711C7D4 |. 3945 08 CMP DWORD PTR SS:[EBP+8],EAX
7711C7D7 |. 0F9CC0 SETL AL
7711C7DA |. 50 PUSH EAX
7711C7DB |. FF75 0C PUSH DWORD PTR SS:[EBP+C]
7711C7DE |. FF75 08 PUSH DWORD PTR SS:[EBP+8]
7711C7E1 |. E8 05030000 CALL OLEAUT32.7711CAEB ;又一个进入的 CALL
――――――――――――――――――――――――――――――――――――――――――――――――――――――――
《〈〈〈〈〈〈〈〈〈〈〈〈〈 终于见到梦想的最终 算法了 〉〉〉〉〉〉〉〉〉〉〉〉〉》》》》》》》》》》》
7711CB01 > /8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] ;第一个循环开始
7711CB04 . |33D2 XOR EDX,EDX
7711CB06 . |6A 0A PUSH 0A
7711CB08 . |5B POP EBX
7711CB09 . |F7F3 DIV EBX
7711CB0B . |83C2 30 ADD EDX,30
7711CB0E . |66:8911 MOV WORD PTR DS:[ECX],DX
7711CB11 . |41 INC ECX
7711CB12 . |41 INC ECX
7711CB13 . |85C0 TEST EAX,EAX
7711CB15 . |8945 08 MOV DWORD PTR SS:[EBP+8],EAX
7711CB18 .^\77 E7 JA SHORT OLEAUT32.7711CB01 ;跳回
7711CB1A . 66:8321 00 AND WORD PTR DS:[ECX],0
7711CB1E . 49 DEC ECX
7711CB1F . 49 DEC ECX
7711CB20 . 5B POP EBX
7711CB21 > 66:8B16 MOV DX,WORD PTR DS:[ESI]
7711CB24 . 66:8B01 MOV AX,WORD PTR DS:[ECX]
7711CB27 . 66:8911 MOV WORD PTR DS:[ECX],DX
7711CB2A . 49 DEC ECX
7711CB2B . 66:8906 MOV WORD PTR DS:[ESI],AX
7711CB2E . 49 DEC ECX
7711CB2F . 46 INC ESI ;产生注册码
--------------------------------------------------------------------------------
【经验总结】
标题写不完全破解,是实在没气看它完的算法,感觉实在太长了,已经耗费了我两个多小时了。注册码是跟出来了
但一次次的累算下来,可能要搞好多时间。。。。明天还要上早班呢。今天就到这里吧,有空我把算法全走一遍
再在这贴下补充完,大家见谅,错误的地方请指出
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2005年11月10日 1:08:01
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)