原帖由 深圳永进实业 发表) w1 c% v, C% I3 h
破解了一晚上!都搞不定! 写这个软件的家伙,加密的还挺厉害!
! ?% [# W [7 e5 x0 E给你个参考:
2 G8 l' B; c+ o9 Y: Ugearbox 2.0 减速器设计系统-------一个PB程序破解
软件简介: Gearbox2.0是基于Windows2000开发的适用于圆柱齿轮减速器、 圆锥齿轮减速器和蜗杆蜗轮减速器设计以及齿轮传动机构设计的辅助设计系统。 该系统包括速比分配、几何参数计算、强度计算、精度查询、结构简图、 数据输出和参数化零件图和装配图设计等子功能模块。本系统具有操作简单、自动化程度高、 灵活性等特点,对机械行业生产厂家,尤其是减速器生产厂家来说,是一个非常实用、高效的设计软件。
前言:
前几天下载了该软件,一看是PB的,从来没碰过PB的,我对PB的程序了解不多。只知道它
同VB程序差不多,都需要带***VM60.DLL之类盔甲才能运行。
破解过程:
1.用OD载入后,运行,随易输入注册码: 1111-1111-1111-1111,点注册后会提示:
--------------------------- 注册码错误 --------------------------- 请输入完整的注册码! --------------------------- 确定 ---------------------------
好,我就从这个消息框入手.
查看PBVM80.DLL这个函数,可发现函数: fnMessageBox(PB就是用它显示消息框的)。
对这个函数下断,被拦截后按CTRL+F9,按F8来到:
10C6D17B 85C0 TEST EAX,EAX 10C6D17D BD 05400080 MOV EBP,80004005 10C6D182 75 04 JNZ SHORT BVM80.10C6D188 10C6D184 896C24 4C MOV DWORD TR SS:[ESP+4C],EBP
向上看来到:
(在这里设断点,从下面字符提示看,好象是执行PB内部函数)
10C6CDE0 83EC 38 SUB ESP,38 10C6CDE3 53  USH EBX 10C6CDE4 55 PUSH EBP 10C6CDE5 56 PUSH ESI ..................... ...................... 10C6CE1C 74 10 JE SHORT PBVM80.10C6CE2E 10C6CE1E 8B56 0C MOV EDX,DWORD PTR DS:[ESI+C] 10C6CE21 68 B00EDE10 PUSH PBVM80.10DE0EB0 ; ASCII
"OB_RUNTIME_CLASS::invoke" 10C6CE26 6A 20 PUSH 20 10C6CE28 52 PUSH EDX 10C6CE29 E8 42EEF3FF CALL PBVM80.sh_dbg_enter 10C6CE2E 8B07 MOV EAX,DWORD PTR DS:[EDI] ..................... ...................... 10C6CF3C 74 75 JE SHORT PBVM80.10C6CFB3 10C6CF3E 8B4424 50 MOV EAX,DWORD PTR SS:[ESP+50] 10C6CF42 85C0 TEST EAX,EAX 10C6CF44 B8 CC0EDE10 MOV EAX,PBVM80.10DE0ECC ; ASCII "Executing class
function" 10C6CF49 74 05 JE SHORT PBVM80.10C6CF50 10C6CF4B B8 E80EDE10 MOV EAX,PBVM80.10DE0EE8 ; ASCII "Executing object
function" 10C6CF50 8B5424 58 MOV EDX,DWORD PTR SS:[ESP+58] 10C6CF54 66:8B4F 04 MOV CX,WORD PTR DS:[EDI+4] 10C6CF58 52 PUSH EDX 10C6CF59 8B17 MOV EDX,DWORD PTR DS:[EDI] 10C6CF5B 51 PUSH ECX 10C6CF5C 52 PUSH EDX ..................... ...................... 10C6CFCF 8B56 0C MOV EDX,DWORD PTR DS:[ESI+C] 10C6CFD2 52 PUSH EDX 10C6CFD3 E8 88E5F3FF CALL PBVM80.sh_dbg_set_this 10C6CFD8 68 040FDE10 PUSH PBVM80.10DE0F04 ; ASCII "Internal Error: We
should never be executing an OB_SYSTEM_FUNC_DEF" 10C6CFDD 6A 00 PUSH 0 10C6CFDF E8 8CE5F3FF CALL PBVM80._sh_dbg_out 10C6CFE4 83C4 08 ADD ESP,8 10C6CFE7 68 66080000 PUSH 866 10C6CFEC 68 480FDE10 PUSH PBVM80.10DE0F48 ; ASCII "obclass.cpp" 10C6CFF1 68 540FDE10 PUSH PBVM80.10DE0F54 ; ASCII "We should never be
executing an OB_SYSTEM_FUNC_DEF" 10C6CFF6 E8 D516F4FF CALL PBVM80.osAssert 10C6CFFB C74424 4C 420C04>MOV DWORD PTR SS:[ESP+4C],80040C42 10C6D003 E9 B2050000 JMP PBVM80.10C6D5BA 10C6D008 83F8 02 CMP EAX,2 10C6D00B 0F85 93000000 JNZ PBVM80.10C6D0A4 10C6D011 8B4424 50 MOV EAX,DWORD PTR SS:[ESP+50] 10C6D015 50 PUSH EAX 10C6D016 56 PUSH ESI 10C6D017 E8 34A80300 CALL PBVM80.ob_set_curr_rtinst_and_retur> 10C6D01C 8B4C24 50 MOV ECX,DWORD PTR SS:[ESP+50] 10C6D020 85C9 TEST ECX,ECX 10C6D022 74 1D JE SHORT PBVM80.10C6D041 10C6D024 68 75080000 PUSH 875 10C6D029 68 880FDE10 PUSH PBVM80.10DE0F88 ; ASCII "obclass.cpp" 10C6D02E 8D5424 58 LEA EDX,DWORD PTR SS:[ESP+58] 10C6D032 6A 00 PUSH 0 10C6D034 52 PUSH EDX 10C6D035 E8 46920200 CALL PBVM80.10C96280 10C6D03A BF 01000000 MOV EDI,1 1..................... ...................... 10C6D0A7 0F85 0F010000 JNZ PBVM80.10C6D1BC 10C6D0AD 8B4C24 50 MOV ECX,DWORD PTR SS:[ESP+50] 10C6D0B1 51 PUSH ECX 10C6D0B2 56 PUSH ESI 10C6D0B3 E8 98A70300 CALL PBVM80.ob_set_curr_rtinst_and_retur> 10C6D0B8 8B4C24 50 MOV ECX,DWORD PTR SS:[ESP+50] 10C6D0BC 85C9 TEST ECX,ECX 10C6D0BE 74 1D JE SHORT PBVM80.10C6D0DD 10C6D0C0 68 A5080000 PUSH 8A5 10C6D0C5 68 940FDE10 PUSH PBVM80.10DE0F94 ; ASCII "obclass.cpp" 10C6D0CA 8D5424 58 LEA EDX,DWORD PTR SS:[ESP+58] 10C6D0CE 6A 00 PUSH 0 ..................... ...................... 10C6D11A E8 41E4F3FF CALL PBVM80.sh_dbg_set_this 10C6D11F 68 A00FDE10 PUSH PBVM80.10DE0FA0 ; ASCII "Executing system dll
function " 10C6D124 6A 1E PUSH 1E 10C6D126 E8 45E4F3FF CALL PBVM80._sh_dbg_out 10C6D12B 83C4 08 ADD ESP,8 10C6D12E 66:85ED TEST BP,BP
..................... ......................
2。下面我们再点注册按扭:
程序被拦截拉,连续按CTRL+F9几下后我在堆栈中发现:"11111111111111111111" --------------------------------------------- 0012EEE8 10CE6C50 RETURN to PBVM80.10CE6C50 0012EEEC 00ABFBF8 0012EEF0 086203C2 0012EEF4 00ABFBF8 0012EEF8 0012EF0C 0012EEFC 00000000 0012EF00 00000002 0012EF04 00ABFBF8 0012EF08 085D0F04 0012EF0C 019D00C4 ASCII "11111111111111111111" 0012EF10 00060D00 0012EF14 086616A4
---------------------------------------------
对019D00C4点右键“Follow in Dump”可看到:(注:我的机器码是0505 - 7149 - 4199 - 3133 - 6666)
019D00C4 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 1111111111111111 019D00D4 31 31 31 31 00 34 39 00 00 00 00 00 37 31 34 39 1111.49.....7149 019D00E4 34 31 39 39 33 31 33 33 36 36 36 36 00 00 00 00 419931336666.... 019D00F4 3C 01 9D 01 31 31 31 31 31 31 31 31 31 31 31 31 <?111111111111 019D0104 31 31 31 31 00 00 00 00 F4 00 9D 01 49 4E 59 41 1111....??INYA 019D0114 47 56 4C 48 57 44 46 56 59 55 42 52 00 00 00 00 GVLHWDFVYUBR.... 019D0124 DC 00 9D 01 49 4E 59 41 47 56 4C 48 57 44 46 56 ??INYAGVLHWDFV 019D0134 59 55 42 52 00 00 00 00 24 01 9D 01 37 31 34 39 YUBR....$?7149 019D0144 34 31 39 39 33 31 33 33 36 36 36 36 00 00 00 00 419931336666.... 019D0154 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
注册码可能在上面字符串里。
我们来对019D00C4下内存断点,看看能看到它的运算。 好我们取消前面10C6CDE0断点.
被拦截,按CTRL+F9,来到: 10D89268 8B8F C60000>MOV ECX,DWORD PTR DS:[EDI+C6] 10D8926E 50 PUSH EAX 10D8926F 51 PUSH ECX 10D89270 57 PUSH EDI 10D89271 E8 1A24EFFF CALL PBVM80.ob_get_const 10D89276 50 PUSH EAX 10D89277 53 PUSH EBX 10D89278 57 PUSH EDI 10D89279 E8 C2E4F3FF CALL PBVM80.ot_string_cat ;(很明显是连接字符串函数) 10D8927E 8BF0 MOV ESI,EAX 10D89280 85F6 TEST ESI,ESI
在10D89279下断点我们可看到许多信息:
C:\WINDOWS\System32\wadxz.dll --------------------一个隐藏文件,记录拉使用次数 HKEY_LOCAL_MACHINE\Software\Sunyick\gearbox\2004\sn-----机器码 DFRTINYAGVLHWDFVYUBR------------注册码!!!!!
************************************************************************ PB的DLL搞的我晕头转向,很遗憾没能找到算法.
另: 软件数据库gearbox.mdb中也保存了使用次数,安装时间,注册码。 两处对比使用次数。(数据库密码:973710)
后记:我写这篇破文目的是希望起抛砖引玉,让大家把破PB好方法展现出来,让我等菜鸟好好学习一下。 我找了一下论坛论坛精华,只一片是介绍破PB的。
|