首页
社区
课程
招聘
[旧帖] [求助]一个变态得注册验证 0.00雪花
发表于: 2009-1-30 20:02 4147

[旧帖] [求助]一个变态得注册验证 0.00雪花

2009-1-30 20:02
4147
此软件已破,重新编辑。
最终验证方式为明文对比。
现供爱好算法的朋友研究。

----------------------------------------
由于工作关系
小弟需要用到一个软件里的一项功能。
可那个软件需要付费……
无奈,尝试自己破解。

我是4年前放暑假得时候,接触得破解。
现在上班都3年了,其间得东西早就扔掉了,目前属于什么都不懂。为这个软件头疼了两天。
软件其实很简单,但好像自我校验做的很强。注册码追不出来,爆破又找不到门路,无奈上来求助论坛的朋友们。

废话少说,正文开始:
由于权限不够,无法上传附件。
传到了网盘里,软件的下载地址如下:
纳米盘:http://www.namipan.com/d/ProgramConsole.rar/3af63a771de1f2cd5363f99ae7c893ca1b3bf1dff7f43900

简单说一下软件的运行情况,
1,运行后弹出注册窗口,只有注册后才可继续使用。
2,注册方式为机器码+注册码。中间的用户名不能少于3位英文。
3,注册码的形式为 XXXX-XXXX-XXXX-XXXX-XXXX 模式,此为软件演示所知。
4,若注册码输入格式不正确,会出现please enter unlock code in the correct field提示
5,格式正确但注册码不正确则会出现incorrect username or unlock code entered
6,软件无壳,delphi编写。

我做过的工作:
开始时想用最基础的搜索文本方式寻找验证地址,实行爆破。但搜索到的“incorrect username or unlock code entered”我觉得与注册码验证无关,个人感觉是作者为了防止破解使用的messagebox内容调用字串。

后通过squn的pbx 命令教程得到启发,适用pbx命令找到读取输入注册码进行计算的入口为:
0046DF94  /$  55            push    ebp

整个子程序为:
0046DF94  /$  55            push    ebp
0046DF95  |.  8BEC          mov     ebp, esp
0046DF97  |.  33C9          xor     ecx, ecx
0046DF99  |.  51            push    ecx
0046DF9A  |.  51            push    ecx
0046DF9B  |.  51            push    ecx
0046DF9C  |.  51            push    ecx
0046DF9D  |.  53            push    ebx
0046DF9E  |.  56            push    esi
0046DF9F  |.  8BD8          mov     ebx, eax
0046DFA1  |.  33C0          xor     eax, eax
0046DFA3  |.  55            push    ebp
0046DFA4  |.  68 D6E14600   push    0046E1D6
0046DFA9  |.  64:FF30       push    dword ptr fs:[eax]
0046DFAC  |.  64:8920       mov     dword ptr fs:[eax], esp
0046DFAF  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
0046DFB2  |.  8B83 1C030000 mov     eax, dword ptr [ebx+31C]
0046DFB8  |.  E8 F3D1FBFF   call    0042B1B0
0046DFBD  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
0046DFC0  |.  8D55 F8       lea     edx, dword ptr [ebp-8]
0046DFC3  |.  E8 CCA8F9FF   call    00408894
0046DFC8  |.  837D F8 00    cmp     dword ptr [ebp-8], 0
0046DFCC  |.  75 23         jnz     short 0046DFF1
0046DFCE  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
0046DFD1  |.  8B83 24030000 mov     eax, dword ptr [ebx+324]
0046DFD7  |.  E8 D4D1FBFF   call    0042B1B0
0046DFDC  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
0046DFDF  |.  8D55 F0       lea     edx, dword ptr [ebp-10]
0046DFE2  |.  E8 ADA8F9FF   call    00408894
0046DFE7  |.  837D F0 00    cmp     dword ptr [ebp-10], 0
0046DFEB  |.  0F84 BA010000 je      0046E1AB
0046DFF1  |>  8D55 F4       lea     edx, dword ptr [ebp-C]
0046DFF4  |.  8B83 1C030000 mov     eax, dword ptr [ebx+31C]
0046DFFA  |.  E8 B1D1FBFF   call    0042B1B0
0046DFFF  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
0046E002  |.  E8 915FF9FF   call    00403F98
0046E007  |.  83F8 03       cmp     eax, 3
0046E00A  |.  0F8C 9B010000 jl      0046E1AB
0046E010  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
0046E013  |.  8B83 24030000 mov     eax, dword ptr [ebx+324]
0046E019  |.  E8 92D1FBFF   call    0042B1B0
0046E01E  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
0046E021  |.  E8 725FF9FF   call    00403F98
0046E026  |.  83F8 03       cmp     eax, 3
0046E029  |.  0F8C 7C010000 jl      0046E1AB
0046E02F  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
0046E032  |.  8BB3 1C030000 mov     esi, dword ptr [ebx+31C]
0046E038  |.  8BC6          mov     eax, esi
0046E03A  |.  E8 71D1FBFF   call    0042B1B0
0046E03F  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
0046E042  |.  8D55 F8       lea     edx, dword ptr [ebp-8]
0046E045  |.  E8 4AA8F9FF   call    00408894
0046E04A  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
0046E04D  |.  8BC6          mov     eax, esi
0046E04F  |.  E8 8CD1FBFF   call    0042B1E0
0046E054  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
0046E057  |.  8BB3 24030000 mov     esi, dword ptr [ebx+324]
0046E05D  |.  8BC6          mov     eax, esi
0046E05F  |.  E8 4CD1FBFF   call    0042B1B0
0046E064  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
0046E067  |.  8D55 F8       lea     edx, dword ptr [ebp-8]
0046E06A  |.  E8 25A8F9FF   call    00408894
0046E06F  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
0046E072  |.  8BC6          mov     eax, esi
0046E074  |.  E8 67D1FBFF   call    0042B1E0
0046E079  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
0046E07C  |.  8B83 1C030000 mov     eax, dword ptr [ebx+31C]
0046E082  |.  E8 29D1FBFF   call    0042B1B0
0046E087  |.  8B55 F4       mov     edx, dword ptr [ebp-C]
0046E08A  |.  B8 ECE14600   mov     eax, 0046E1EC              ;  -
0046E08F  |.  E8 EC61F9FF   call    00404280
0046E094  |.  83F8 05       cmp     eax, 5
0046E097  |.  74 4F         je      short 0046E0E8
0046E099  |.  A1 E4FD4700   mov     eax, dword ptr [47FDE4]
0046E09E  |.  8B00          mov     eax, dword ptr [eax]
0046E0A0  |.  E8 7781FDFF   call    0044621C
0046E0A5  |.  6A 00         push    0
0046E0A7  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
0046E0AA  |.  8B83 E4020000 mov     eax, dword ptr [ebx+2E4]
0046E0B0  |.  E8 FBD0FBFF   call    0042B1B0
0046E0B5  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
0046E0B8  |.  E8 9F60F9FF   call    0040415C
0046E0BD  |.  50            push    eax
0046E0BE  |.  A1 700B4800   mov     eax, dword ptr [480B70]
0046E0C3  |.  E8 9460F9FF   call    0040415C
0046E0C8  |.  8BD0          mov     edx, eax
0046E0CA  |.  A1 E4FD4700   mov     eax, dword ptr [47FDE4]
0046E0CF  |.  8B00          mov     eax, dword ptr [eax]
0046E0D1  |.  59            pop     ecx
0046E0D2  |.  E8 A190FDFF   call    00447178
0046E0D7  |.  A1 E4FD4700   mov     eax, dword ptr [47FDE4]
0046E0DC  |.  8B00          mov     eax, dword ptr [eax]
0046E0DE  |.  E8 4981FDFF   call    0044622C
0046E0E3  |.  E9 C3000000   jmp     0046E1AB
0046E0E8  |>  FF05 680B4800 inc     dword ptr [480B68]
0046E0EE  |.  833D 680B4800>cmp     dword ptr [480B68], 3
0046E0F5  |.  7E 11         jle     short 0046E108
0046E0F7  |.  A1 E4FD4700   mov     eax, dword ptr [47FDE4]
0046E0FC  |.  8B00          mov     eax, dword ptr [eax]
0046E0FE  |.  E8 D18FFDFF   call    004470D4
0046E103  |.  E9 A3000000   jmp     0046E1AB
0046E108  |>  6A 00         push    0                          ; /Title = NULL
0046E10A  |.  68 F0E14600   push    0046E1F0                   ; |tfrm_maindelphispy
0046E10F  |.  E8 D090F9FF   call    <jmp.&user32.FindWindowA>  ; \FindWindowA
0046E114  |.  85C0          test    eax, eax
0046E116      75 0C         jnz     short 0046E124
0046E118  |.  6A 00         push    0                          ; /Title = NULL
0046E11A  |.  68 04E24600   push    0046E204                   ; |tdedemainform
0046E11F  |.  E8 C090F9FF   call    <jmp.&user32.FindWindowA>  ; \FindWindowA
0046E124  |>  85C0          test    eax, eax
0046E126      75 0C         jnz     short 0046E134
0046E128  |.  6A 00         push    0                          ; /Title = NULL
0046E12A  |.  68 14E24600   push    0046E214                   ; |ollydbg
0046E12F  |.  E8 B090F9FF   call    <jmp.&user32.FindWindowA>  ; \FindWindowA
0046E134  |>  85C0          test    eax, eax
0046E136      75 0C         jnz     short 0046E144
0046E138  |.  68 1CE24600   push    0046E21C                   ; /ollydbg - [cpu]
0046E13D  |.  6A 00         push    0                          ; |Class = 0
0046E13F  |.  E8 A090F9FF   call    <jmp.&user32.FindWindowA>  ; \FindWindowA
0046E144  |>  85C0          test    eax, eax
0046E146      75 0C         jnz     short 0046E154
0046E148  |.  6A 00         push    0                          ; /Title = NULL
0046E14A  |.  68 2CE24600   push    0046E22C                   ; |tidawindow
0046E14F  |.  E8 9090F9FF   call    <jmp.&user32.FindWindowA>  ; \FindWindowA
0046E154  |>  85C0          test    eax, eax
0046E156      75 0C         jnz     short 0046E164
0046E158  |.  6A 00         push    0                          ; /Title = NULL
0046E15A  |.  68 38E24600   push    0046E238                   ; |windbgmainclass
0046E15F  |.  E8 8090F9FF   call    <jmp.&user32.FindWindowA>  ; \FindWindowA
0046E164  |>  85C0          test    eax, eax
0046E166      7E 15         jle     short 0046E17D
0046E168  |.  A1 E4FD4700   mov     eax, dword ptr [47FDE4]
0046E16D  |.  8B00          mov     eax, dword ptr [eax]
0046E16F  |.  E8 608FFDFF   call    004470D4
0046E174  |.  8BC3          mov     eax, ebx
0046E176  |.  E8 B15CFDFF   call    00443E2C
0046E17B  |.  EB 2E         jmp     short 0046E1AB
0046E17D  |>  B8 64000000   mov     eax, 64
0046E182  |>  48            /dec     eax
0046E183    ^ 75 FD         \jnz     short 0046E182
0046E185  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
0046E188  |.  BA 50E24600   mov     edx, 0046E250              ;  registered
0046E18D  |.  E8 225CF9FF   call    00403DB4
0046E192  |.  E8 FD71FEFF   call    00455394
0046E197  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
0046E19A  |.  BA 64E24600   mov     edx, 0046E264              ;  not-registered
0046E19F  |.  E8 105CF9FF   call    00403DB4
0046E1A4  |.  8BC3          mov     eax, ebx
0046E1A6  |.  E8 B1EFFFFF   call    0046D15C
0046E1AB  |>  33C0          xor     eax, eax
0046E1AD  |.  5A            pop     edx
0046E1AE  |.  59            pop     ecx
0046E1AF  |.  59            pop     ecx
0046E1B0  |.  64:8910       mov     dword ptr fs:[eax], edx
0046E1B3  |.  68 DDE14600   push    0046E1DD
0046E1B8  |>  8D45 F0       lea     eax, dword ptr [ebp-10]
0046E1BB  |.  E8 5C5BF9FF   call    00403D1C
0046E1C0  |.  8D45 F4       lea     eax, dword ptr [ebp-C]
0046E1C3  |.  E8 545BF9FF   call    00403D1C
0046E1C8  |.  8D45 F8       lea     eax, dword ptr [ebp-8]
0046E1CB  |.  BA 02000000   mov     edx, 2
0046E1D0  |.  E8 6B5BF9FF   call    00403D40
0046E1D5  \.  C3            retn

虽然找到了入口,但接下来不知道怎么做了。
该程序充斥着无数得call调用,和自我检验。
在破解过程中发现:
软件不能更改文件名,否则无法运行。
爆破某些位置后,软件会自我验证报错。

请各位高手帮忙看看,找找思路吧。能做出一个算法注册机最好了。
由于工作实在需要,请各位务必帮忙。
先谢谢大家。

我的联系方式:
QQ:32146838

祝各位过年好。

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
路过
2009-1-30 21:21
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
无法解压,貌似rar已损坏。
2009-1-30 21:36
0
雪    币: 192
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
地址已经更新
十分感谢
2009-1-30 23:02
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
0046D30E   .  8B45 F8       mov     eax, dword ptr [ebp-8]
0046D311   .  E8 466EF9FF   call    0040415C
0046D316   .  5A            pop     edx
0046D317   .  E8 94BFF9FF   call    004092B0                 ;  compare keys
0046D31C   .  83F0 00       xor     eax, 0
0046D31F   .  0F85 DE040000 jnz     0046D803

明码比较,断在上面红色那一行,好像第一次断下来是试用的Key,第二次断下来就是授权的Key了。
算法比较困难,SHA1 + MD5 + RIJNDAEL,我搞不定,等高手吧。内存注册机蛮容易的,不知道符不符合楼主的胃口。。。


上传的附件:
2009-1-31 05:40
0
雪    币: 192
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
弱弱得问一句
如何清除他的注册信息?

还有 楼上的兄弟能给整理整理思路和方法吗?
多谢了

我用olldbg看到了注册码了,就给输入上了,结果没法继续跟他的验证了……
2009-1-31 10:05
0
雪    币: 177
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
到 C:\Documents and Settings\All Users\Application Data\{121714c1d9cfdf4d96789d91a1404b9c} 这个目录下,把里面两个文件删掉就是未注册的了.
2009-1-31 12:24
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
思路上没什么特别的,我就是断在你找到的那个地址,然后慢慢F8和F7。本来想把算法研究一下的,后来发现实在太长了,而且又是明码比较,就放弃了。不过他的anti挺有意思的,什么软件都检测一下,可惜OllyDBG的版本实在太多了,啊哈哈。
我和你一样开始注册的时候找不到注册信息,用FileMon的时候,被它检测到了,然后就被关了。后来跟了一下发现不仅要删除C:\Documents and Settings\All Users\Application Data\下面那个长串数字文件夹,还要把C:\Documents and Settings\你的用户名\Local Settings\Temp下面的长串文件夹,和一个生成的隐藏exe也要删除才可以。
2009-1-31 13:08
0
雪    币: 192
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
论坛果然强人多啊。
我找到了它生成的两个netctrl.ini,删除了发现没用。
没想到还得把文件夹删掉。
再次谢过各位。
2009-1-31 13:29
0
雪    币: 192
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
顶一下
看看有没有爱好算法的朋友喜欢。
2009-2-1 10:29
0
游客
登录 | 注册 方可回帖
返回
//