某知名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:
005CBC95 . |8B55 FC mov edx,dword ptr ss:
005CBC98 . |E8 2357E3FF call <jmp.&rtl150.System::UStrFromWStr>
005CBC9D . |8B45 D0 mov eax,dword ptr ss:
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:
005CBCAE . |BA 9CBE5C00 mov edx,GraspStd.005CBE9C ;绑定失败,请稍后重试。
005CBCB3 . |E8 D855E3FF call <jmp.&rtl150.System::WStrLAsg>
005CBCB8 > |8D45 CC lea eax,dword ptr ss:
005CBCBB . |8B55 FC mov edx,dword ptr ss:
005CBCBE . |E8 FD56E3FF call <jmp.&rtl150.System::UStrFromWStr>
005CBCC3 . |8B45 CC mov eax,dword ptr ss:
005CBCC6 . |E8 5D95E3FF call <jmp.&GraspCMRunStd.Udllmessageintf>
005CBCCB . |E9 A6000000 jmp GraspStd.005CBD76
005CBCD0 > \A1 94496F00 mov eax,dword ptr ds:
2.2.3上面的也可以跳过,就是检测加密狗的时候跳,就不会弹注册框了
可以直接搜软件启动时弹出的 “正在检测加密狗,请稍候...”字符串找到地址(方法看注解):
006A7FD4 .BA 38856A00 mov edx,GraspStd.006A8538 ;正在检测加密狗,请稍候...
006A7FD9 .E8 BA4CFAFF call GraspStd.0064CC98
006A7FDE .A1 144B6F00 mov eax,dword ptr ds: ;╡o
006A7FE3 .8B00 mov eax,dword ptr ds:
006A7FE5 .E8 2EB0D5FF call <jmp.&vcl150.Controls::TControl::Re>
006A7FEA >A1 70496F00 mov eax,dword ptr ds:
006A7FEF .8B00 mov eax,dword ptr ds:
006A7FF1 .E8 76CDEEFF call GraspStd.00594D6C
006A7FF6 .E9 A5000000 jmp GraspStd.006A80A0
006A7FFB >A1 D4496F00 mov eax,dword ptr ds:
006A8000 .33D2 xor edx,edx ;GraspStd.<ModuleEntryPoint>
006A8002 .8910 mov dword ptr ds:,edx ;GraspStd.<ModuleEntryPoint>
006A8004 .A1 BC486F00 mov eax,dword ptr ds:
006A8009 .8338 01 cmp dword ptr ds:,0x1
006A800C .75 59 jnz short GraspStd.006A8067
006A800E .8D95 DCFEFFFF lea edx,dword ptr ss:
006A8014 .B8 181A0000 mov eax,0x1A18
006A8019 .E8 FAA1D5FF call <jmp.&rtl150.Sysutils::IntToStr>
006A801E .8B95 DCFEFFFF mov edx,dword ptr ss:
006A8024 .8D85 E0FEFFFF lea eax,dword ptr ss:
006A802A .E8 9993D5FF call <jmp.&rtl150.System::WStrFromUStr>
006A802F .8B85 E0FEFFFF mov eax,dword ptr ss:
006A8035 .50 push eax ;kernel32.BaseThreadInitThunk
006A8036 .68 58856A00 push GraspStd.006A8558
006A803B .A1 4C4B6F00 mov eax,dword ptr ds: ;deo
006A8040 .8B00 mov eax,dword ptr ds:
006A8042 .8B40 70 mov eax,dword ptr ds:
006A8045 .50 push eax ;kernel32.BaseThreadInitThunk
006A8046 .8D85 E4FEFFFF lea eax,dword ptr ss:
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:
006A805B .A1 94496F00 mov eax,dword ptr ds:
006A8060 .E8 5B93D5FF call <jmp.&rtl150.System::UStrFromWStr>
006A8065 .EB 39 jmp short GraspStd.006A80A0
006A8067 >8D85 D8FEFFFF lea eax,dword ptr ss:
006A806D .50 push eax ;kernel32.BaseThreadInitThunk
006A806E .8D95 D4FEFFFF lea edx,dword ptr ss:
006A8074 .B8 181A0000 mov eax,0x1A18
006A8079 .E8 9AA1D5FF call <jmp.&rtl150.Sysutils::IntToStr>
006A807E .8B85 D4FEFFFF mov eax,dword ptr ss:
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:
006A8096 .A1 94496F00 mov eax,dword ptr ds:
006A809B .E8 D891D5FF call <jmp.&rtl150.System::UStrAsg>
006A80A0 >A1 044A6F00 mov eax,dword ptr ds:
006A80A5 .8038 01 cmp byte ptr ds:,0x0 ;此处比较eax是否为0(可以把这里改为1,因为eax到这里后为1)
006A80A8 .74 1C je short GraspStd.006A80C6 ;或把这里的je改为jmp强跳
006A80AA .8B4D F0 mov ecx,dword ptr ss:
006A80AD .33D2 xor edx,edx ;GraspStd.<ModuleEntryPoint>
006A80AF .8B45 CC mov eax,dword ptr ss:
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: ;wow64.74E9E0D8
006A80BE .C600 01 mov byte ptr ds:,0x1
006A80C1 .E9 CB000000 jmp GraspStd.006A8191
006A80C6 >8B4D F0 mov ecx,dword ptr ss:
006A80C9 .33D2 xor edx,edx ;GraspStd.<ModuleEntryPoint>
006A80CB .8B45 CC mov eax,dword ptr ss:
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: ;wow64.74E9E0D8
006A80DA .C600 01 mov byte ptr ds:,0x1
006A80DD .E9 AF000000 jmp GraspStd.006A8191
006A80E2 >8B45 CC mov eax,dword ptr ss:
006A80E5 .C680 55040000>mov byte ptr ds:,0x1
006A80EC .8B45 CC mov eax,dword ptr ss:
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,
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,
00593FD2|.33C0 xor eax,eax ;kernel32.BaseThreadInitThunk
00593FD4|.E8 77D0E6FF call <jmp.&rtl150.System::ParamStr>
00593FD9|.8B45 E8 mov eax,
00593FDC|.8D55 EC lea edx,
00593FDF|.E8 04E2E6FF call <jmp.&rtl150.Sysutils::Trim>
00593FE4|.8B45 EC mov eax,
00593FE7|.8D55 F0 lea edx,
00593FEA|.E8 C9E1E6FF call <jmp.&rtl150.Sysutils::LowerCase>
00593FEF|.8B45 F0 mov eax,
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:
00594009|.8338 03 cmp dword ptr ds:,0x3
0059400C|.75 0D jnz short GraspStd.0059401B
0059400E|.BB 10270000 mov ebx,0x2710
00594013|.C706 10270000 mov dword ptr ds:,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:
00594029|.C700 01000000 mov dword ptr ds:,0x1
0059402F|.A1 D4496F00 mov eax,dword ptr ds:
0059401B|>E8 40FFFFFF call GraspStd.00593F60 中如下:
00593F60/$A1 0C496F00 mov eax,dword ptr ds:
00593F65|.33D2 xor edx,edx ;GraspStd.<ModuleEntryPoint>
00593F67|.8910 mov dword ptr ds:,edx ;GraspStd.<ModuleEntryPoint>
00593F69|.A1 484B6F00 mov eax,dword ptr ds:
00593F6E|.C700 00000000 mov dword ptr ds:,0x0 把此处改为0
00593F74|.A1 D4496F00 mov eax,dword ptr ds:
00593F79|.C700 00000000 mov dword ptr ds:,0x0 此处也改为0
00593F7F\.C3 retn
至此,所有的限制都可以正常使用了,我用这个版本一年多了,没有任何问题。
如果哪位大佬有更好的方法请指教!
如果你觉得对你有所帮助请给我热心值,我要洗违规点~~~呜~~~~~ 好活!!!! 104952551 发表于 2021-11-23 08:22
这个不用担心,要么改host,要么用我写的一个备份小程序备份数据库,我用了一年多了,没任何问题
你也太小看gjp了,一般host跟备份人家会想不到吗?你看下人家老大之前破解gjp的心得再说!它都是偷偷改数据库的,你认为有问题时,你已经备份好几个月改过的数据!
https://bbs.sunwy.org/forum.php?mod=viewthread&tid=206948&highlight=%C9%F7%D3%C3 厉害了。
行啊,这么简简单单就PJ了 学习了! 本帖最后由 3yu3 于 2021-11-22 17:14 编辑
这个GJ婆有回传数据,还是小心点用。 nb了贼厉害
好厉害啊!膜拜了 真不错的资料,正打算学习爆破哩,就有这么好的资料,感谢感谢 有生成脚本点击工单的吗