查看: 653|回复: 1

某知名ERP管理软件爆破方法(适合新手)

[复制链接]
发表于 2021-11-22 18:57 | 显示全部楼层 |阅读模式
非法程序、 2021-11-22 18:57 653 1 显示全部楼层
软件名:GJ婆ERP(无壳)
软件版本:T9 Top v20.5(需要的自己网上找)
破解方法:爆破(非模拟狗)
所需工具:OD吾爱版

教程开始:
1.思路:破解一款软件,首先你要了解这个软件有哪些限制?它是通过什么方法实现的?你要如何处理?当你有了这些思路才能把它办掉。
2.开整:
2.1软件打开会提示你服务器端没找到加密狗,所以我们要把服务器端加密狗类型改成软狗,所谓软狗就相当于是个注册码,不需要你插硬件狗就行。
做完这一步就是开始搞客户端了。
2.2.1断点返回法,先让软件跑起来弹出注册框后随便输入一串码后反回OD暂停,一路执行到返回(Ctrl+F9)直到可以点软件的“确定”按钮后再一路执行到返回(Ctrl+F9)直到返回程序领空。看是从哪个call中出来的,出来后到哪里做了判断(判断是否真码)……
2.2.2 简单的方法是有提示“绑定失败,请稍后重试。”,直接搜这个也行,上面的方法可以不用了,如果你用了说明你看完教程就上了,哈哈~~
直接上代码:
  1. 005CBC90   . /EB 3E         jmp short GraspStd.005CBCD0              ;注册狗关键跳,我是jnz改的jmp
  2. 005CBC92   . |8D45 D0       lea eax,dword ptr ss:[ebp-0x30]
  3. 005CBC95   . |8B55 FC       mov edx,dword ptr ss:[ebp-0x4]
  4. 005CBC98   . |E8 2357E3FF   call <jmp.&rtl150.System::UStrFromWStr>
  5. 005CBC9D   . |8B45 D0       mov eax,dword ptr ss:[ebp-0x30]
  6. 005CBCA0   . |33D2          xor edx,edx                              ;  GraspStd.<ModuleEntryPoint>
  7. 005CBCA2   . |E8 3165E3FF   call <jmp.&rtl150.Sysutils::SameText>
  8. 005CBCA7   . |84C0          test al,al
  9. 005CBCA9   . |74 0D         je short GraspStd.005CBCB8
  10. 005CBCAB   . |8D45 FC       lea eax,dword ptr ss:[ebp-0x4]
  11. 005CBCAE   . |BA 9CBE5C00   mov edx,GraspStd.005CBE9C                ;  绑定失败,请稍后重试。
  12. 005CBCB3   . |E8 D855E3FF   call <jmp.&rtl150.System::WStrLAsg>
  13. 005CBCB8   > |8D45 CC       lea eax,dword ptr ss:[ebp-0x34]
  14. 005CBCBB   . |8B55 FC       mov edx,dword ptr ss:[ebp-0x4]
  15. 005CBCBE   . |E8 FD56E3FF   call <jmp.&rtl150.System::UStrFromWStr>
  16. 005CBCC3   . |8B45 CC       mov eax,dword ptr ss:[ebp-0x34]
  17. 005CBCC6   . |E8 5D95E3FF   call <jmp.&GraspCMRunStd.Udllmessageintf>
  18. 005CBCCB   . |E9 A6000000   jmp GraspStd.005CBD76
  19. 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.于是我们找“----未注册”如果不知道可以在所有未注册上下断,我这里直接上关键代码:
  1. 00593FBB  |.  E8 F8E1E6FF   call <jmp.&rtl150.Sysutils::LowerCase>
  2. 00593FC0  |.  8B45 FC       mov eax,[local.1]
  3. 00593FC3  |.  BA 84405900   mov edx,GraspStd.00594084                ;  /q
  4. 00593FC8  |.  E8 3BD4E6FF   call <jmp.&rtl150.System::UStrEqual>
  5. 00593FCD  |.  74 33         je short GraspStd.00594002
  6. 00593FCF  |.  8D55 E8       lea edx,[local.6]
  7. 00593FD2  |.  33C0          xor eax,eax                              ;  kernel32.BaseThreadInitThunk
  8. 00593FD4  |.  E8 77D0E6FF   call <jmp.&rtl150.System::ParamStr>
  9. 00593FD9  |.  8B45 E8       mov eax,[local.6]
  10. 00593FDC  |.  8D55 EC       lea edx,[local.5]
  11. 00593FDF  |.  E8 04E2E6FF   call <jmp.&rtl150.Sysutils::Trim>
  12. 00593FE4  |.  8B45 EC       mov eax,[local.5]
  13. 00593FE7  |.  8D55 F0       lea edx,[local.4]
  14. 00593FEA  |.  E8 C9E1E6FF   call <jmp.&rtl150.Sysutils::LowerCase>
  15. 00593FEF  |.  8B45 F0       mov eax,[local.4]
  16. 00593FF2  |.  BA 98405900   mov edx,GraspStd.00594098                ;  q
  17. 00593FF7  |.  E8 0CD4E6FF   call <jmp.&rtl150.System::UStrEqual>
  18. 00593FFC  |.  74 04         je short GraspStd.00594002
  19. 00593FFE  |.  33DB          xor ebx,ebx
  20. 00594000  |.  EB 02         jmp short GraspStd.00594004
  21. 00594002  |>  B3 01         mov bl,0x1
  22. 00594004  |>  A1 484B6F00   mov eax,dword ptr ds:[0x6F4B48]
  23. 00594009  |.  8338 03       cmp dword ptr ds:[eax],0x3
  24. 0059400C  |.  75 0D         jnz short GraspStd.0059401B
  25. 0059400E  |.  BB 10270000   mov ebx,0x2710
  26. 00594013  |.  C706 10270000 mov dword ptr ds:[esi],0x2710
  27. 00594019  |.  EB 33         jmp short GraspStd.0059404E
  28. 0059401B  |>  E8 40FFFFFF   call GraspStd.00593F60                  ;此call是个关键进入后可以看到关键代码
  29. 00594020  |.  84DB          test bl,bl
  30. 00594022  |.  74 21         je short GraspStd.00594045
  31. 00594024  |.  A1 484B6F00   mov eax,dword ptr ds:[0x6F4B48]
  32. 00594029  |.  C700 01000000 mov dword ptr ds:[eax],0x1
  33. 0059402F  |.  A1 D4496F00   mov eax,dword ptr ds:[0x6F49D4]
复制代码
0059401B  |>  E8 40FFFFFF   call GraspStd.00593F60    中如下:
  1. 00593F60  /$  A1 0C496F00   mov eax,dword ptr ds:[0x6F490C]
  2. 00593F65  |.  33D2          xor edx,edx                              ;  GraspStd.<ModuleEntryPoint>
  3. 00593F67  |.  8910          mov dword ptr ds:[eax],edx               ;  GraspStd.<ModuleEntryPoint>
  4. 00593F69  |.  A1 484B6F00   mov eax,dword ptr ds:[0x6F4B48]
  5. 00593F6E  |.  C700 00000000 mov dword ptr ds:[eax],0x0               把此处改为0
  6. 00593F74  |.  A1 D4496F00   mov eax,dword ptr ds:[0x6F49D4]
  7. 00593F79  |.  C700 00000000 mov dword ptr ds:[eax],0x0               此处也改为0
  8. 00593F7F  \.  C3            retn
复制代码
至此,所有的限制都可以正常使用了,我用这个版本一年多了,没有任何问题。
如果哪位大佬有更好的方法请指教!

发表于 2021-11-23 09:31 | 显示全部楼层
chan90qiong 2021-11-23 09:31 显示全部楼层
又见技术帖!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表 发新帖

快速回复 返回顶部 返回列表