适合新手小试牛刀的某知名ERP管理软件爆破方法
[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!
前段时间有人玩知名ERP,玩的很嗨,促使大家都学习了一下;
软件名:GJ ERP(无壳)
软件版本:T9 Top v20.5
破解方法:爆破(非模拟狗)
所需工具:OD吾爱版
以上所需东西都需要自己网上找
教程开始:
1.思路:破解一款软件,首先你要了解这个软件有哪些限制?它是通过什么方法实现的?你要如何处理?当你有了这些思路才能把它办掉。
2.开整:
2.1软件打开会提示你服务器端没找到加密狗,所以我们要把服务器端加密狗类型改成软狗,所谓软狗就相当于是个注册码,不需要你插硬件狗就行。做完这一步就是开始搞客户端了。
2.2.1断点返回法,先让软件跑起来弹出注册框后随便输入一串码后反回OD暂停,一路执行到返回(Ctrl+F9)直到可以点软件的“确定”按钮后再一路执行到返回(Ctrl+F9)直到返回程序领空。看是从哪个call中出来的,出来后到哪里做了判断(判断是否真码)……
2.2.2 简单的方法是有提示“绑定失败,请稍后重试。”,直接搜这个也行,上面的方法可以不用了,如果你用了说明你看完教程就上了,哈哈~~
直接上代码:
005CBC90 . /EB 3E jmp short GraspStd.005CBCD0 ;注册狗关键跳,我是jnz改的jmp 005CBC92 . |8D45 D0 lea eax,dword ptr ss:[ebp-0x30] 005CBC95 . |8B55 FC mov edx,dword ptr ss:[ebp-0x4] 005CBC98 . |E8 2357E3FF call <jmp.&rtl150.System::UStrFromWStr> 005CBC9D . |8B45 D0 mov eax,dword ptr ss:[ebp-0x30] 005CBCA0 . |33D2 xor edx,edx ; GraspStd.<ModuleEntryPoint> 005CBCA2 . |E8 3165E3FF call <jmp.&rtl150.Sysutils::SameText> 005CBCA7 . |84C0 test al,al 005CBCA9 . |74 0D je short GraspStd.005CBCB8 005CBCAB . |8D45 FC lea eax,dword ptr ss:[ebp-0x4] 005CBCAE . |BA 9CBE5C00 mov edx,GraspStd.005CBE9C ; 绑定失败,请稍后重试。 005CBCB3 . |E8 D855E3FF call <jmp.&rtl150.System::WStrLAsg> 005CBCB8 > |8D45 CC lea eax,dword ptr ss:[ebp-0x34] 005CBCBB . |8B55 FC mov edx,dword ptr ss:[ebp-0x4] 005CBCBE . |E8 FD56E3FF call <jmp.&rtl150.System::UStrFromWStr> 005CBCC3 . |8B45 CC mov eax,dword ptr ss:[ebp-0x34] 005CBCC6 . |E8 5D95E3FF call <jmp.&GraspCMRunStd.Udllmessageintf> 005CBCCB . |E9 A6000000 jmp GraspStd.005CBD76 005CBCD0 > \A1 94496F00 mov eax,dword ptr ds:[0x6F4994]
2.2.3上面的也可以跳过,就是检测加密狗的时候跳,就不会弹注册框了
可以直接搜软件启动时弹出的 “正在检测加密狗,请稍候...”字符串找到地址(方法看注解):
006A7FD4 . BA 38856A00 mov edx,GraspStd.006A8538 ; 正在检测加密狗,请稍候... 006A7FD9 . E8 BA4CFAFF call GraspStd.0064CC98 006A7FDE . A1 144B6F00 mov eax,dword ptr ds:[0x6F4B14] ; ╡o 006A7FE3 . 8B00 mov eax,dword ptr ds:[eax] 006A7FE5 . E8 2EB0D5FF call <jmp.&vcl150.Controls::TControl::Re> 006A7FEA > A1 70496F00 mov eax,dword ptr ds:[0x6F4970] 006A7FEF . 8B00 mov eax,dword ptr ds:[eax] 006A7FF1 . E8 76CDEEFF call GraspStd.00594D6C 006A7FF6 . E9 A5000000 jmp GraspStd.006A80A0 006A7FFB > A1 D4496F00 mov eax,dword ptr ds:[0x6F49D4] 006A8000 . 33D2 xor edx,edx ; GraspStd.<ModuleEntryPoint> 006A8002 . 8910 mov dword ptr ds:[eax],edx ; GraspStd.<ModuleEntryPoint> 006A8004 . A1 BC486F00 mov eax,dword ptr ds:[0x6F48BC] 006A8009 . 8338 01 cmp dword ptr ds:[eax],0x1 006A800C . 75 59 jnz short GraspStd.006A8067 006A800E . 8D95 DCFEFFFF lea edx,dword ptr ss:[ebp-0x124] 006A8014 . B8 181A0000 mov eax,0x1A18 006A8019 . E8 FAA1D5FF call <jmp.&rtl150.Sysutils::IntToStr> 006A801E . 8B95 DCFEFFFF mov edx,dword ptr ss:[ebp-0x124] 006A8024 . 8D85 E0FEFFFF lea eax,dword ptr ss:[ebp-0x120] 006A802A . E8 9993D5FF call <jmp.&rtl150.System::WStrFromUStr> 006A802F . 8B85 E0FEFFFF mov eax,dword ptr ss:[ebp-0x120] 006A8035 . 50 push eax ; kernel32.BaseThreadInitThunk 006A8036 . 68 58856A00 push GraspStd.006A8558 006A803B . A1 4C4B6F00 mov eax,dword ptr ds:[0x6F4B4C] ; deo 006A8040 . 8B00 mov eax,dword ptr ds:[eax] 006A8042 . 8B40 70 mov eax,dword ptr ds:[eax+0x70] 006A8045 . 50 push eax ; kernel32.BaseThreadInitThunk 006A8046 . 8D85 E4FEFFFF lea eax,dword ptr ss:[ebp-0x11C] 006A804C . 50 push eax ; kernel32.BaseThreadInitThunk 006A804D . E8 2E94D5FF call <jmp.&rtl150.System::IntfDispCall> 006A8052 . 83C4 10 add esp,0x10 006A8055 . 8B95 E4FEFFFF mov edx,dword ptr ss:[ebp-0x11C] 006A805B . A1 94496F00 mov eax,dword ptr ds:[0x6F4994] 006A8060 . E8 5B93D5FF call <jmp.&rtl150.System::UStrFromWStr> 006A8065 . EB 39 jmp short GraspStd.006A80A0 006A8067 > 8D85 D8FEFFFF lea eax,dword ptr ss:[ebp-0x128] 006A806D . 50 push eax ; kernel32.BaseThreadInitThunk 006A806E . 8D95 D4FEFFFF lea edx,dword ptr ss:[ebp-0x12C] 006A8074 . B8 181A0000 mov eax,0x1A18 006A8079 . E8 9AA1D5FF call <jmp.&rtl150.Sysutils::IntToStr> 006A807E . 8B85 D4FEFFFF mov eax,dword ptr ss:[ebp-0x12C] 006A8084 . 33C9 xor ecx,ecx 006A8086 . BA 70856A00 mov edx,GraspStd.006A8570 ; DogNo(这个很明显是没有狗了) 006A808B . E8 7014DCFF call GraspStd.00469500 006A8090 . 8B95 D8FEFFFF mov edx,dword ptr ss:[ebp-0x128] 006A8096 . A1 94496F00 mov eax,dword ptr ds:[0x6F4994] 006A809B . E8 D891D5FF call <jmp.&rtl150.System::UStrAsg> 006A80A0 > A1 044A6F00 mov eax,dword ptr ds:[0x6F4A04] 006A80A5 . 8038 01 cmp byte ptr ds:[eax],0x0 ;此处比较eax是否为0(可以把这里改为1,因为eax到这里后为1) 006A80A8 . 74 1C je short GraspStd.006A80C6 ;或把这里的je改为jmp强跳 006A80AA . 8B4D F0 mov ecx,dword ptr ss:[ebp-0x10] 006A80AD . 33D2 xor edx,edx ; GraspStd.<ModuleEntryPoint> 006A80AF . 8B45 CC mov eax,dword ptr ss:[ebp-0x34] 006A80B2 . E8 21620000 call GraspStd.006AE2D8 006A80B7 . 84C0 test al,al 006A80B9 . 75 27 jnz short GraspStd.006A80E2 006A80BB . 8B45 C8 mov eax,dword ptr ss:[ebp-0x38] ; wow64.74E9E0D8 006A80BE . C600 01 mov byte ptr ds:[eax],0x1 006A80C1 . E9 CB000000 jmp GraspStd.006A8191 006A80C6 > 8B4D F0 mov ecx,dword ptr ss:[ebp-0x10] 006A80C9 . 33D2 xor edx,edx ; GraspStd.<ModuleEntryPoint> 006A80CB . 8B45 CC mov eax,dword ptr ss:[ebp-0x34] 006A80CE . E8 F16F0000 call GraspStd.006AF0C4 006A80D3 . 84C0 test al,al 006A80D5 . 75 0B jnz short GraspStd.006A80E2 006A80D7 . 8B45 C8 mov eax,dword ptr ss:[ebp-0x38] ; wow64.74E9E0D8 006A80DA . C600 01 mov byte ptr ds:[eax],0x1 006A80DD . E9 AF000000 jmp GraspStd.006A8191 006A80E2 > 8B45 CC mov eax,dword ptr ss:[ebp-0x34] 006A80E5 . C680 55040000>mov byte ptr ds:[eax+0x455],0x1 006A80EC . 8B45 CC mov eax,dword ptr ss:[ebp-0x34] 006A80EF . E8 04050000 call GraspStd.006A85F8 006A80F4 . 84C0 test al,al 006A80F6 . 0F84 95000000 je GraspStd.006A8191
至此软件已基本能够使用了,但使用插件时仍会提示未注册不能使用插件
3.于是我们找“----未注册”如果不知道可以在所有未注册上下断,我这里直接上关键代码:
00593FBB |. E8 F8E1E6FF call <jmp.&rtl150.Sysutils::LowerCase> 00593FC0 |. 8B45 FC mov eax,[local.1] 00593FC3 |. BA 84405900 mov edx,GraspStd.00594084 ; /q 00593FC8 |. E8 3BD4E6FF call <jmp.&rtl150.System::UStrEqual> 00593FCD |. 74 33 je short GraspStd.00594002 00593FCF |. 8D55 E8 lea edx,[local.6] 00593FD2 |. 33C0 xor eax,eax ; kernel32.BaseThreadInitThunk 00593FD4 |. E8 77D0E6FF call <jmp.&rtl150.System::ParamStr> 00593FD9 |. 8B45 E8 mov eax,[local.6] 00593FDC |. 8D55 EC lea edx,[local.5] 00593FDF |. E8 04E2E6FF call <jmp.&rtl150.Sysutils::Trim> 00593FE4 |. 8B45 EC mov eax,[local.5] 00593FE7 |. 8D55 F0 lea edx,[local.4] 00593FEA |. E8 C9E1E6FF call <jmp.&rtl150.Sysutils::LowerCase> 00593FEF |. 8B45 F0 mov eax,[local.4] 00593FF2 |. BA 98405900 mov edx,GraspStd.00594098 ; q 00593FF7 |. E8 0CD4E6FF call <jmp.&rtl150.System::UStrEqual> 00593FFC |. 74 04 je short GraspStd.00594002 00593FFE |. 33DB xor ebx,ebx 00594000 |. EB 02 jmp short GraspStd.00594004 00594002 |> B3 01 mov bl,0x1 00594004 |> A1 484B6F00 mov eax,dword ptr ds:[0x6F4B48] 00594009 |. 8338 03 cmp dword ptr ds:[eax],0x3 0059400C |. 75 0D jnz short GraspStd.0059401B 0059400E |. BB 10270000 mov ebx,0x2710 00594013 |. C706 10270000 mov dword ptr ds:[esi],0x2710 00594019 |. EB 33 jmp short GraspStd.0059404E 0059401B |> E8 40FFFFFF call GraspStd.00593F60 ;此call是个关键进入后可以看到关键代码 00594020 |. 84DB test bl,bl 00594022 |. 74 21 je short GraspStd.00594045 00594024 |. A1 484B6F00 mov eax,dword ptr ds:[0x6F4B48] 00594029 |. C700 01000000 mov dword ptr ds:[eax],0x1 0059402F |. A1 D4496F00 mov eax,dword ptr ds:[0x6F49D4]
0059401B |> E8 40FFFFFF call GraspStd.00593F60 中如下:
00593F60 /$ A1 0C496F00 mov eax,dword ptr ds:[0x6F490C] 00593F65 |. 33D2 xor edx,edx ; GraspStd.<ModuleEntryPoint> 00593F67 |. 8910 mov dword ptr ds:[eax],edx ; GraspStd.<ModuleEntryPoint> 00593F69 |. A1 484B6F00 mov eax,dword ptr ds:[0x6F4B48] 00593F6E |. C700 00000000 mov dword ptr ds:[eax],0x0 把此处改为0 00593F74 |. A1 D4496F00 mov eax,dword ptr ds:[0x6F49D4] 00593F79 |. C700 00000000 mov dword ptr ds:[eax],0x0 此处也改为0 00593F7F \. C3 retn
至此,所有的限制都可以正常使用了,懂得既然懂,不懂的也木有办法,自己去继续看看其他教程吧;
财贸XXX IITOP+20.5 绕过DOG检测关键点
006A4455 jmp GraspStd.006A4738
问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!