最近想用这个第3方控件对用户地址进行规范和校正,试用以后觉得效果很不错。
http://www.softwarecompany.com/dotnet/netaddress.htm
对破解完全是新手, 想请哪位大侠帮忙看看
License Manager应该是VB的代码,没有加壳。试用版装好后在注册表有以下设置
HKLM\SOFTWARE\The Software Company\NetAddress 3.5
"InstallDir"="C:\\Program Files\\The Software Company\\NetAddress 3.5\\"
"License"="21351200706200000002007062020154820070720000000000099900000000000000053912162000000000000060212499324224"
用IDA同SmartCheckk 看一下,觉得逻辑挺简单,但是我的汇编太烂,呵呵。
调入License Manager后,可以看见这个"License"项是关键,里面有安装的日期20070620还有失效的日期20070720, 还有剩下的调用次数999。20070620201548应该是安装时的时间。用它的带的实例程序运行几次,可以看见剩下的调用次数在减少。 用事先备份注册文件恢复
这个注册项,剩下的调用次数就可以恢复,可见这里是关键。注册项最后面部分的数字应该是对前面部分的效验码。仅仅修改剩下的调用次数,License Manager会出错。
.text:0040C63F loc_40C63F: ; CODE XREF: .text:0040C62Dj
.text:0040C63F lea edx, [ebp-0ACh]
.text:0040C645 lea eax, [ebp-3ECh]
.text:0040C64B push edx
.text:0040C64C push 6
.text:0040C64E lea ecx, [ebp-0BCh]
.text:0040C654 lea edi, [esi+34h]
.text:0040C657 push eax
.text:0040C658 push ecx
.text:0040C659 mov dword ptr [ebp-0A4h], 4
.text:0040C663 mov dword ptr [ebp-0ACh], 2
.text:0040C66D mov [ebp-3E4h], edi
.text:0040C673 mov dword ptr [ebp-3ECh], 4008h
.text:0040C67D call ds:rtcMidCharVar
.text:0040C683 lea edx, [ebp-0CCh]
.text:0040C689 lea eax, [ebp-40Ch]
.text:0040C68F push edx
.text:0040C690 push 0Bh
.text:0040C692 lea ecx, [ebp-0DCh]
.text:0040C698 push eax
.text:0040C699 push ecx
.text:0040C69A mov dword ptr [ebp-0C4h], 4
.text:0040C6A4 mov dword ptr [ebp-0CCh], 2
.text:0040C6AE mov [ebp-404h], edi
.text:0040C6B4 mov dword ptr [ebp-40Ch], 4008h
.text:0040C6BE call ds:rtcMidCharVar
.text:0040C6C4 mov eax, 2
.text:0040C6C9 lea edx, [ebp-0FCh]
.text:0040C6CF mov [ebp-0F4h], eax
.text:0040C6D5 mov [ebp-0FCh], eax
.text:0040C6DB push edx
.text:0040C6DC lea eax, [ebp-42Ch]
.text:0040C6E2 push 10h
.text:0040C6E4 lea ecx, [ebp-10Ch]
.text:0040C6EA push eax
.text:0040C6EB push ecx
.text:0040C6EC mov [ebp-424h], edi
.text:0040C6F2 mov dword ptr [ebp-42Ch], 4008h
.text:0040C6FC call ds:rtcMidCharVar
.text:0040C702 mov edi, ds:__vbaVarCat
.text:0040C708 lea edx, [ebp-0BCh]
.text:0040C70E lea eax, [ebp-0DCh]
.text:0040C714 push edx
.text:0040C715 lea ecx, [ebp-0ECh]
.text:0040C71B push eax
.text:0040C71C push ecx
.text:0040C71D call edi ; __vbaVarCat
.text:0040C71F push eax
.text:0040C720 lea edx, [ebp-10Ch]
.text:0040C726 lea eax, [ebp-11Ch]
.text:0040C72C push edx
.text:0040C72D push eax
.text:0040C72E call edi ; __vbaVarCat
.text:0040C730 push eax
.text:0040C731 call ds:__vbaStrVarMove
.text:0040C737 lea ecx, [ebp-3Ch]
.text:0040C73A push eax
.text:0040C73B push ecx
.text:0040C73C push 0Ah
.text:0040C73E call ds:__vbaLsetFixstrFree
.text:0040C744 lea edx, [ebp-11Ch]
.text:0040C74A lea eax, [ebp-10Ch]
.text:0040C750 push edx
.text:0040C751 lea ecx, [ebp-0ECh]
.text:0040C757 push eax
.text:0040C758 lea edx, [ebp-0FCh]
.text:0040C75E push ecx
.text:0040C75F lea eax, [ebp-0DCh]
.text:0040C765 push edx
.text:0040C766 lea ecx, [ebp-0BCh]
.text:0040C76C push eax
.text:0040C76D lea edx, [ebp-0CCh]
.text:0040C773 push ecx
.text:0040C774 lea eax, [ebp-0ACh]
.text:0040C77A push edx
.text:0040C77B push eax
.text:0040C77C push 8
.text:0040C77E call ds:__vbaFreeVarList
.text:0040C784 add esp, 24h
.text:0040C787 lea ecx, [ebp-28h]
.text:0040C78A push ecx
.text:0040C78B push 0Ah
.text:0040C78D mov edi, ds:__vbaStrFixstr
.text:0040C793 call edi ; __vbaStrFixstr
.text:0040C795 mov edx, eax
.text:0040C797 lea ecx, [ebp-74h]
.text:0040C79A call ds:__vbaStrMove
.text:0040C7A0 lea edx, [ebp-3Ch]
.text:0040C7A3 push eax
.text:0040C7A4 push edx
.text:0040C7A5 push 0Ah
.text:0040C7A7 call edi ; __vbaStrFixstr
.text:0040C7A9 mov edx, eax
.text:0040C7AB lea ecx, [ebp-78h]
.text:0040C7AE call ds:__vbaStrMove
.text:0040C7B4 push eax
.text:0040C7B5 call ds:__vbaStrCmp
.text:0040C7BB neg eax
.text:0040C7BD sbb eax, eax
.text:0040C7BF lea ecx, [ebp-74h]
.text:0040C7C2 neg eax
.text:0040C7C4 neg eax
.text:0040C7C6 mov [ebp-480h], ax
.text:0040C7CD lea eax, [ebp-78h]
.text:0040C7D0 push eax
.text:0040C7D1 push ecx
.text:0040C7D2 push 2
.text:0040C7D4 call ds:__vbaFreeStrList
.text:0040C7DA add esp, 0Ch
.text:0040C7DD cmp [ebp-480h], bx
.text:0040C7E4 jz loc_40C8A8
.text:0040C7E4
.text:0040C7EA mov ecx, 0Ah
.text:0040C7EF mov eax, 80020004h
.text:0040C7F4 mov [ebp-0DCh], ecx
.text:0040C7FA mov [ebp-0CCh], ecx
.text:0040C800 lea edx, [ebp-3FCh]
.text:0040C806 lea ecx, [ebp-0BCh]
.text:0040C80C mov [ebp-0D4h], eax
.text:0040C812 mov [ebp-0C4h], eax
.text:0040C818 mov dword ptr [ebp-3F4h],offset s_Registration ; "Registration"
.text:0040C822 mov dword ptr [ebp-3FCh], 8
.text:0040C82C call ds:__vbaVarDup
.text:0040C832 lea edx, [ebp-3ECh]
.text:0040C838 lea ecx, [ebp-0ACh]
.text:0040C83E mov dword ptr [ebp-3E4h], offset s_IncorrectLice ; "Incorrect License Key"
.text:0040C848 mov dword ptr [ebp-3ECh], 8
.text:0040C852 call ds:__vbaVarDup
我随意在License Manager输了个注册码
我用IDA 在0040C7E4 这里强制跳转到loc_40C8A8,注册成功的窗口出来了。
.text:0040C7E4 jz loc_40C8A8
但是后来在注册表里写入的注册项就是破损的。前面用来生成注册码的Call看不太懂。
求那位大侠帮指点一下。 小弟感谢万分。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)