此软件已破,重新编辑。
最终验证方式为明文对比。
现供爱好算法的朋友研究。
----------------------------------------
由于工作关系
小弟需要用到一个软件里的一项功能。
可那个软件需要付费……
无奈,尝试自己破解。
我是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作者讲授!