CAXA2007这款软件个人觉得比国外的AUTO CAD好用多了哈,不愧为国人争光,请大家支持优秀的国产软件哈.下面是过程:
简单介绍一下,CAXA安装的时候,要输入序列号,这时随便输入哈,安装后,正常运行的时候,如果没有狗,是无法保存,另存文件的,今天主要也就是解决狗的问题.
每次无狗运行的时候都会弹出一个对话框,如下:
[localimg=221,136]1[/localimg]
点确定后,进入软件界面,是无保存,另存的(都是灰色的)哈,点帮助里面的关于,可以看到自己安装时输入的序列号.证明软件启动过程已经检测狗的存在,因为是暴破,也不考虑狗与序列号的对应关系哈,下面正式开始了:
因为没壳,OD正常载入:提示一下哈,不要以为字符串参考简单哈,有时还是比较关键的哈
首先看一下字符串哈,先查找一下 注册二字,没有,那就仔细看一下所有 的,有没有关键的字眼哈,看没看到 授权使用呀,,有经验的这些都是关键哈,后面几个都可以看到的哈
超级字串参考+ , 条目 649
地址=00433774
反汇编=MOV EDI,Eb.005335A4
文本字串=授权使用:
双击到反汇编窗口,看到下面的代码
00433757 . /74 3C JE SHORT Eb.00433795
00433759 . |8D7C24 1C LEA EDI,DWORD PTR SS:[ESP+1C]
0043375D . |83C9 FF OR ECX,FFFFFFFF
00433760 . |33C0 XOR EAX,EAX
00433762 . |6A FF PUSH -1
00433764 . |F2:AE REPNE SCAS BYTE PTR ES:[EDI]
00433766 . |F7D1 NOT ECX
00433768 . |2BF9 SUB EDI,ECX
0043376A . |891D A0355300 MOV DWORD PTR DS:[5335A0],EBX
00433770 . |8BF7 MOV ESI,EDI
00433772 . |8BD1 MOV EDX,ECX
00433774 . |BF A4355300 MOV EDI,Eb.005335A4 ; 授权使用:
00433779 . |83C9 FF OR ECX,FFFFFFFF
0043377C . |F2:AE REPNE SCAS BYTE PTR ES:[EDI]
0043377E . |8BCA MOV ECX,EDX
00433780 . |4F DEC EDI
00433781 . |C1E9 02 SHR ECX,2
看一下上面的关键跳哈,自己可以试一下,下断00433757 ,发现这个JE跳实现的,所以就无法到授权使用这来,呵呵,知道怎么改了吧,直接NOP,方便哈
00433757 90 NOP
00433758 90 NOP
修改后,先保存一下哈,再运行看看
哈哈,弹出一个[localimg=110,102]2[/localimg]
确定后,再进入软件看看,去掉了加密狗的限制,有保存与另存了,证明刚才修改的这个有效,为了完美,咱们还是把这个授权使用的这个窗口给干掉哈
我建设用暂停 的方法哈,下面大家看一下
当弹出NAG这个窗口的时候,先不要点确定哈,回到OD,点暂停或者F12,再AHT+K,看到下面一些东西
调用堆栈: 主线程
地址 堆栈 函数过程 / 参数 调用来自 结构
0012F6A0 77D19418 包含ntdll.KiFastSystemCallRet USER32.77D19416 0012F6D4
0012F6A4 77D2DBA8 USER32.WaitMessage USER32.77D2DBA3 0012F6D4
0012F6D8 77D2593F USER32.77D2DA19 USER32.77D2593A 0012F6D4
0012F700 77D3A91E USER32.77D25889 USER32.77D3A919 0012F6FC
0012F9C0 77D3A284 USER32.SoftModalMessageBox USER32.77D3A27F 0012F9BC
0012FB10 77D661D3 USER32.77D3A10F USER32.77D661CE 0012FB0C
0012FB68 77D66278 USER32.MessageBoxTimeoutW USER32.77D66273 0012FB64
0012FB9C 77D50617 ? USER32.MessageBoxTimeoutA USER32.77D50612 0012FB98
0012FBBC 77D505CF ? USER32.MessageBoxExA USER32.77D505CA 0012FBB8
0012FBC0 00000000 hOwner = NULL
0012FBC4 005335A4 Text = "授权使用: "
0012FBC8 005336A4 Title = "授权使用"
0012FBCC 00000000 Style = MB_OK|MB_APPLMODAL
0012FBD0 00000000 LanguageID = 0 (LANG_NEUTRAL)
0012FBD8 004339AC ? USER32.MessageBoxA Eb.004339A6 0012FBD4
0012FBDC 00000000 hOwner = NULL
0012FBE0 005335A4 Text = "授权使用: "
0012FBE4 005336A4 Title = "授权使用"
0012FBE8 00000000 Style = MB_OK|MB_APPLMODAL
0012FBEC 00402049 ? Eb.00433970 Eb.00402044
没几个哈,很好分析,注意0012FBD8,点右键,选择 显示调用 ,这样回汇编窗口,看到的如下哈
00433970 $ A1 A0355300 MOV EAX,DWORD PTR DS:[5335A0]
00433975 . 83F8 FF CMP EAX,-1
00433978 . 75 06 JNZ SHORT Eb.00433980
0043397A . B8 01000000 MOV EAX,1
0043397F . C3 RETN
00433980 > 85C0 TEST EAX,EAX
00433982 . 75 05 JNZ SHORT Eb.00433989
00433984 . E9 67320000 JMP Eb.00436BF0
00433989 > 83F8 01 CMP EAX,1
0043398C . 75 05 JNZ SHORT Eb.00433993
0043398E . E9 5D320000 JMP Eb.00436BF0
00433993 > 83F8 0A CMP EAX,0A
00433996 . 75 1A JNZ SHORT Eb.004339B2
00433998 . 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
0043399A . 68 A4365300 PUSH Eb.005336A4 ; |授权使用
0043399F . 68 A4355300 PUSH Eb.005335A4 ; |授权使用:
004339A4 . 6A 00 PUSH 0 ; |hOwner = NULL
004339A6 . FF15 48A35000 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
哈哈,再注意这个00433970,左键点到这一行,[005335A0]=0000000A,本地调用来自 00402044
重要的哈,右键 转到CALL来自00402044,再看到下面代码
0040203A . 8B85 78FFFFFF MOV EAX,DWORD PTR SS:[EBP-88]
00402040 . 85C0 TEST EAX,EAX
00402042 74 0D JE SHORT Eb.00402051
00402044 . E8 27190300 CALL Eb.00433970 这个就是弹出窗口的关键CALL,注意上面的JE哈
00402049 . 85C0 TEST EAX,EAX
0040204B . 0F84 BA100000 JE Eb.0040310B
显然,我们在 00402040下断, 好,我们重新运行一下程序,看一下这个JE跳不跳,如果不跳就会出现烦人的窗口哈,
结果正如分析哈,JE是没有跳的,很好吧,直接 JMP 00402042 /EB 0D JMP SHORT Eb.00402051
再次保存哈
一切都解决了哈
[localimg=448,381]3[/localimg]
我也是才学点破解的知识哈,现学现卖哈,献丑了哈,大家千万不要笑也,
目前为止,搞了几个带狗运行的商行软件,不为别的,只为技术哈.
上面这个CAXA2007我相信还有其他暴破的点,我这里共修改两处,可以不是最好的,应该可以只改一处就可以搞定的,大家愿意的话,自己研究下哈,OK,就这样了,希望大家共同进步哈
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!