本帖最后由 332595 于 2017-11-11 08:29 编辑
前几天看了别人的帖子弄考无忧的算法,觉得甚是有意思就自己弄了注册机出来,当然是弄了个全套。请原谅我易语言也学了几天而已,原来自学过VB所以学易语言觉得还是有点点基础。
图如下,当然源代码就不贴了,怕丢人。。
-
全套注册,当然屏没有截完
医学类的注册机
然而自己不知道功力深浅,找了个软件也试着看能不能弄弄算法,或者是追到注册码,结果颜面扫地,真想给自己二耳光,没这金刚牙就不要咬铁壳壳嘛,这下弄个前不前后不后的。老师给点思路吧,我已经快睡不着了。
看看这个软件吧:
名称:QQoffice人事软件
语言:Delphi
加密:Aspack
调试:ODFZ:DEDE+PEexploer
地址:http://www.qqbgsoft.com/CP_HrGz.html
至于怎么脱衣之类的,我想像我们这类菜鸟,当然直接用全自动的脱壳机了,建议在XP下脱,WIN7我试过不行的,其实这点我之前听大神讲过的,所以再怎么换系统我必须要留个XP。
说说这个软件的特点吧:安装完成后分为Server和Client端,试用90次以后必须进行注册,之前我已经想办法跳过这些NBG了,原以为我可以直接使用正版的,但是的但是我才发现作者很是狡猾狡猾的,直接改这些跳转后有些功能会隐藏的,你是看不到的,如图:
1
2
3-4
5
6
当然还有其他地方我没有找出来。。。。
部分记录如下:
[Delphi] 纯文本查看 复制代码 00BE3578为用户登陆界面的确定按钮
00CA51E4为清除密码的按钮
0094DC5C为启动的闪屏界面
00D84C68帐套管理的小齿轮图标位置,但是不知道如何显示出来
00D84DFC |. E8 279D69FF call 逆向强制.0041EB28 这里的CALL决定下面的跳转是否显示该齿轮
[Delphi] 纯文本查看 复制代码 以下修改进入到“逆向强制注册窗口,进入到提示提示登陆用户及密码界面”
00DAC55E |. 58 pop eax ; 0012FF9C
00DAC55F |. E8 F42567FF call QQoffice.0041EB58
00DAC564 74 48 je short QQoffice.00DAC5AE jle改成je
00DAC566 |. 8D85 60FFFFFF lea eax,[local.40]
00DAC56C |. BA 5A000000 mov edx,0x5A
00DAC571 |. B1 01 mov cl,0x1
00DAC573 |. E8 70DD66FF call QQoffice.0041A2E8
00DAC578 |. 8D85 60FFFFFF lea eax,[local.40]
00DAC57E |. 8D55 E0 lea edx,[local.8]
00DAC581 |. E8 2A2567FF call QQoffice.0041EAB0
00DAC586 |. 8D85 60FFFFFF lea eax,[local.40]
00DAC58C |. 50 push eax
00DAC58D |. 8D85 50FFFFFF lea eax,[local.44]
00DAC593 |. 33D2 xor edx,edx
00DAC595 |. B1 01 mov cl,0x1
00DAC597 |. E8 4CDD66FF call QQoffice.0041A2E8
00DAC59C |. 8D95 50FFFFFF lea edx,[local.44]
00DAC5A2 |. 58 pop eax ; 0012FF9C
00DAC5A3 |. E8 B02567FF call QQoffice.0041EB58
00DAC5A8 0F8E 5E010000 jle QQoffice.00DAC70C jg改jle
00DAC5AE |> 8D95 48FFFFFF lea edx,[local.46]
以下地方是我在PEexploer里查看到的,原来未注册很多功能都是不显示的,包括上图中的第6点也是通过改属于显示出来的。
[Delphi] 纯文本查看 复制代码 【模块管理】逆向点:
00DC10CB /75 45 jnz short QQoffice.00DC1112 je掉不让跳转
00DC10CD |. |8D55 FC lea edx,[local.1]
00DC10D0 |. |B8 5C11DC00 mov eax,QQoffice.00DC115C ; HYLKRQL
00DC10D5 |. |E8 1E2676FF call QQoffice.005236F8
00DC10DA |. |8B55 FC mov edx,[local.1]
00DC10DD |. |A1 2026E000 mov eax,dword ptr ds:[0xE02620] ; ,鬣
00DC10E2 |. |8B00 mov eax,dword ptr ds:[eax]
00DC10E4 |. |E8 B74F64FF call QQoffice.004060A0
00DC10E9 |75 27 jnz short QQoffice.00DC1112 je掉不让跳转
00DC10EB |. |8BCB mov ecx,ebx
【引入模块】逆向点:
00DC0FAB |. /75 45 jnz short QQoffice.00DC0FF2 je掉不让跳转
00DC0FAD |. |8D55 FC lea edx,[local.1]
00DC0FB0 |. |B8 3C10DC00 mov eax,QQoffice.00DC103C ; HYLKRQL
00DC0FB5 |. |E8 3E2776FF call QQoffice.005236F8
00DC0FBA |. |8B55 FC mov edx,[local.1]
00DC0FBD |. |A1 2026E000 mov eax,dword ptr ds:[0xE02620] ; ,鬣
00DC0FC2 |. |8B00 mov eax,dword ptr ds:[eax]
00DC0FC4 |. |E8 D75064FF call QQoffice.004060A0
00DC0FC9 |. |75 27 jnz short QQoffice.00DC0FF2 je掉不让跳转
00DC0FCB |. |8BCB mov ecx,ebx
【制作模块】逆向点:
00DC11B3 |. /75 45 jnz short QQoffice.00DC11FA
00DC11B5 |. |8D55 FC lea edx,[local.1]
00DC11B8 |. |B8 4412DC00 mov eax,QQoffice.00DC1244 ; HYLKRQL
00DC11BD |. |E8 362576FF call QQoffice.005236F8
00DC11C2 |. |8B55 FC mov edx,[local.1]
00DC11C5 |. |A1 2026E000 mov eax,dword ptr ds:[0xE02620] ; ,鬣
00DC11CA |. |8B00 mov eax,dword ptr ds:[eax]
00DC11CC |. |E8 CF4E64FF call QQoffice.004060A0
00DC11D1 |. |75 27 jnz short QQoffice.00DC11FA
【制作系统】逆向点:
00DC129B |. /75 45 jnz short QQoffice.00DC12E2
00DC129D |. |8D55 FC lea edx,[local.1]
00DC12A0 |. |B8 2C13DC00 mov eax,QQoffice.00DC132C ; HYLKRQL
00DC12A5 |. |E8 4E2476FF call QQoffice.005236F8
00DC12AA |. |8B55 FC mov edx,[local.1]
00DC12AD |. |A1 2026E000 mov eax,dword ptr ds:[0xE
关键的地方,也是让我着急的地方就是这里:
1.Server端也会检测注册信息,如果未注册一是不能备份帐套,另一个会限制连接站点数(默认只支持1个用户链接),Server端很简单,脱壳后直接搞定几个跳转就行了,但是我深度怀疑在Client注册的时候会在Server端进行验证(这点因为不知道如何下断无法验证,但是明确一点是该软件不是在线注册的);
2.在调试过程中,特别是在调试注册的时候软件会出现卡死,OD也会死掉,需要重新载入(我再次怀疑是Client与Server在通信完成注册),致使无法完整跟踪到注册码的本地生成过程;
3.就是该软件无论如何也找不到他的[未注册标题]位置,打死都改不掉,这点老气人了。
注册过程:
[Delphi] 纯文本查看 复制代码 00BE0767 |. E8 18B782FF call 逆向强制.0040BE84
00BE076C |. 8D4D E8 lea ecx,[local.6]
00BE076F |. 8B55 F8 mov edx,[local.2]
00BE0772 |. 8B45 FC mov eax,[local.1]
00BE0775 |. E8 F2C21C00 call 逆向强制.00DACA6C ; 关键CALL
00BE077A |. 84C0 test al,al
00BE077C |. 75 0E jnz short 逆向强制.00BE078C
00BE077E |. 8B83 78030000 mov eax,dword ptr ds:[ebx+0x378]
在这里发现将假码反转,后面的就卡死了:
[Delphi] 纯文本查看 复制代码 005238B4 |. 83FB 01 cmp ebx,0x1
005238B7 |. 7C 20 jl short 逆向强制.005238D9 ; 将注册码反转
005238B9 |> 8D45 E8 /lea eax,[local.6]
005238BC |. 8B55 F8 |mov edx,[local.2]
005238BF |. 0FB6541A FF |movzx edx,byte ptr ds:[edx+ebx-0x1]
005238C4 |. E8 8725EEFF |call 逆向强制.00405E50
005238C9 |. 8B55 E8 |mov edx,[local.6]
005238CC |. 8D45 F0 |lea eax,[local.4]
005238CF |. E8 7026EEFF |call 逆向强制.00405F44
005238D4 |. 4B |dec ebx
005238D5 |. 85DB |test ebx,ebx
005238D7 |.^ 75 E0 \jnz short 逆向强制.005238B9
005238D9 |> 83FE 0C cmp esi,0xC
005238DC |. 7E 0C jle short 逆向强制.005238EA
我知道我对不起祖国,对不起人民,更对不起大家{:6_218:},今天只有请大家来打脸了,细细的皮鞭抽我吧{:6_224:}{:6_224:}
只求大家给我指条活路:这货到底该怎么调试!!如何才能追到注册码,如果有些算法就更好了。。。
|