首先我们可以发现A变速器是ASPACK加壳,并且带隐性自效验[因此0day所有的破解版都是无效破解版]。显然脱壳不是办法,如果带交叉隐形自效验,SMC技术也将会无效的,当然了是否也带交叉自效验我不管去论证了,找隐性自效验消耗时间太多,而且此软件又用了驱动,如果真要猛一点,比如给你的0D来点慢速,^_^,我看OD肯定会挂掉的,所以快速爆破并且直接内存补丁为上策.
直接OD带壳调试.首先找到注册码出错弹窗点,别乱试图进入启动弹窗CALL调啊,我机子好,不然你可要真领会一下给你OD带来点慢速效果。:D
1:启动A变速器后我们可以看到弹出注册码输入窗口[记住,你要把此软件次数全部用完]
2:随便输入什么,你可以用内存断点,窗口断点,万能断点,或者0D返回方式都能马上获得注册码出错弹窗点,并且马上来到以下代码.
00403548 C3 retn
00403549 90 nop
0040354A 90 nop
0040354B 90 nop
0040354C 55 push ebp
0040354D 8BEC mov ebp,esp
0040354F 81C4 C4F7FFFF add esp,-83C
00403555 53 push ebx
00403556 56 push esi
00403557 57 push edi
00403558 8BF0 mov esi,eax
0040355A BF 3C554C00 mov edi,aspeeder.004C553C
0040355F B8 DC604C00 mov eax,aspeeder.004C60DC
00403564 E8 2BF90900 call aspeeder.004A2E94
00403569 8B15 5C114D00 mov edx,dword ptr ds:[4D115C] ; aspeeder.00551A2C
0040356F 8B02 mov eax,dword ptr ds:[edx]
00403571 8B10 mov edx,dword ptr ds:[eax] ; aspeeder.004C8038
00403573 FF92 E8000000 call dword ptr ds:[edx+E8]
00403579 83F8 02 cmp eax,2
0040357C 75 11 jnz short aspeeder.0040358F
0040357E 8B4D D8 mov ecx,dword ptr ss:[ebp-28]
00403581 64:890D 00000000 mov dword ptr fs:[0],ecx
00403588 8BC1 mov eax,ecx
0040358A E9 D6010000 jmp aspeeder.00403765
0040358F 6A 40 push 40
00403591 33D2 xor edx,edx
00403593 66:C745 E8 0800 mov word ptr ss:[ebp-18],8
00403599 8955 FC mov dword ptr ss:[ebp-4],edx
0040359C A1 5C114D00 mov eax,dword ptr ds:[4D115C]
004035A1 FF45 F4 inc dword ptr ss:[ebp-C]
004035A4 8D55 FC lea edx,dword ptr ss:[ebp-4]
004035A7 8B08 mov ecx,dword ptr ds:[eax]
004035A9 8B81 08030000 mov eax,dword ptr ds:[ecx+308]
004035AF E8 A8EB0700 call aspeeder.0048215C
004035B4 837D FC 00 cmp dword ptr ss:[ebp-4],0
004035B8 74 05 je short aspeeder.004035BF
004035BA 8B55 FC mov edx,dword ptr ss:[ebp-4]
004035BD EB 06 jmp short aspeeder.004035C5
004035BF 8D97 7E010000 lea edx,dword ptr ds:[edi+17E]
004035C5 52 push edx
004035C6 68 50165500 push aspeeder.00551650 ; ASCII 很面熟啊,老弟 "A7456C12309EAF6BEF610A5B1F408D62B4AF7775E167656C236BC3B8D77F587E"
004035CB E8 90F70900 call aspeeder.004A2D60
004035D0 83C4 0C add esp,0C
004035D3 FF4D F4 dec dword ptr ss:[ebp-C]
004035D6 8D45 FC lea eax,dword ptr ss:[ebp-4]
004035D9 BA 02000000 mov edx,2
004035DE E8 19D60A00 call aspeeder.004B0BFC
004035E3 33C0 xor eax,eax
004035E5 8945 D4 mov dword ptr ss:[ebp-2C],eax
004035E8 33C9 xor ecx,ecx
004035EA 894D D0 mov dword ptr ss:[ebp-30],ecx
004035ED 33C0 xor eax,eax
004035EF 8945 CC mov dword ptr ss:[ebp-34],eax
004035F2 33D2 xor edx,edx
004035F4 8955 C8 mov dword ptr ss:[ebp-38],edx
004035F7 33C9 xor ecx,ecx
004035F9 894D C4 mov dword ptr ss:[ebp-3C],ecx
004035FC 8D55 D0 lea edx,dword ptr ss:[ebp-30]
004035FF 8D87 7F010000 lea eax,dword ptr ds:[edi+17F]
00403605 E8 1E570000 call aspeeder.00408D28
0040360A 8D55 D4 lea edx,dword ptr ss:[ebp-2C]
0040360D 8D87 88010000 lea eax,dword ptr ds:[edi+188]
00403613 E8 10570000 call aspeeder.00408D28
00403618 8B0D 48165500 mov ecx,dword ptr ds:[551648]
0040361E 51 push ecx
0040361F 8D87 D9010000 lea eax,dword ptr ds:[edi+1D9]
00403625 50 push eax
00403626 8D95 C4F7FFFF lea edx,dword ptr ss:[ebp-83C]
0040362C 52 push edx
0040362D E8 162D0A00 call aspeeder.004A6348
00403632 83C4 0C add esp,0C
00403635 8D55 C4 lea edx,dword ptr ss:[ebp-3C]
00403638 8D85 C4F7FFFF lea eax,dword ptr ss:[ebp-83C]
0040363E E8 C9580000 call aspeeder.00408F0C
00403643 8D4D CC lea ecx,dword ptr ss:[ebp-34]
00403646 51 push ecx
00403647 8B4D D4 mov ecx,dword ptr ss:[ebp-2C]
0040364A 8B55 D0 mov edx,dword ptr ss:[ebp-30]
0040364D 8B45 C4 mov eax,dword ptr ss:[ebp-3C]
00403650 E8 4F4E0000 call aspeeder.004084A4
00403655 8D85 C4F7FFFF lea eax,dword ptr ss:[ebp-83C]
0040365B 8B55 CC mov edx,dword ptr ss:[ebp-34]
0040365E E8 51590000 call aspeeder.00408FB4
00403663 8D8F DE010000 lea ecx,dword ptr ds:[edi+1DE]
00403669 51 push ecx
0040366A 8D85 C4F7FFFF lea eax,dword ptr ss:[ebp-83C]
00403670 50 push eax
00403671 E8 C6F40900 call aspeeder.004A2B3C
00403676 83C4 08 add esp,8
00403679 8D55 CC lea edx,dword ptr ss:[ebp-34]
0040367C 8D85 C4F7FFFF lea eax,dword ptr ss:[ebp-83C]
00403682 E8 85580000 call aspeeder.00408F0C
00403687 8D55 D4 lea edx,dword ptr ss:[ebp-2C]
0040368A B8 88164D00 mov eax,aspeeder.004D1688 ; ASCII "C985F97A3C4E0D3BF7D35DC4148E5C47749076D668CA8464A6D2CCFB1B26183623315E5450610784D974ED5E9702A451" 很面熟啊,老弟
0040368F E8 94560000 call aspeeder.00408D28
00403694 8D55 C4 lea edx,dword ptr ss:[ebp-3C]
00403697 B8 50165500 mov eax,aspeeder.00551650 ; ASCII "A7456C12309EAF6BEF610A5B1F408D62B4AF7775E167656C236BC3B8D77F587E"
0040369C E8 6B580000 call aspeeder.00408F0C
004036A1 8D55 C8 lea edx,dword ptr ss:[ebp-38]
004036A4 52 push edx
004036A5 8B4D D4 mov ecx,dword ptr ss:[ebp-2C]
004036A8 8B55 D0 mov edx,dword ptr ss:[ebp-30]
004036AB 8B45 C4 mov eax,dword ptr ss:[ebp-3C]
004036AE E8 F14D0000 call aspeeder.004084A4
004036B3 8D85 C4F7FFFF lea eax,dword ptr ss:[ebp-83C]
004036B9 8B55 C8 mov edx,dword ptr ss:[ebp-38]
004036BC E8 F3580000 call aspeeder.00408FB4
004036C1 8B55 C8 mov edx,dword ptr ss:[ebp-38]
004036C4 8B45 CC mov eax,dword ptr ss:[ebp-34]
004036C7 E8 68380000 call aspeeder.00406F34
004036CC 85C0 test eax,eax
004036CE 8D45 D4 lea eax,dword ptr ss:[ebp-2C]
004036D1 0F94C3 sete bl
004036D4 83E3 01 and ebx,1
004036D7 E8 28360000 call aspeeder.00406D04
004036DC 8D45 D0 lea eax,dword ptr ss:[ebp-30]
004036DF E8 20360000 call aspeeder.00406D04
004036E4 8D45 CC lea eax,dword ptr ss:[ebp-34]
004036E7 E8 18360000 call aspeeder.00406D04
004036EC 8D45 C8 lea eax,dword ptr ss:[ebp-38]
004036EF E8 10360000 call aspeeder.00406D04
004036F4 8D45 C4 lea eax,dword ptr ss:[ebp-3C]
004036F7 E8 08360000 call aspeeder.00406D04
004036FC 84DB test bl,bl
004036FE 74 1C je short aspeeder.0040371C
00403700 33D2 xor edx,edx
00403702 8B86 10030000 mov eax,dword ptr ds:[esi+310]
00403708 E8 6FE90700 call aspeeder.0048207C
0040370D 33D2 xor edx,edx
0040370F 8915 E8524C00 mov dword ptr ds:[4C52E8],edx
00403715 E8 52EFFFFF call aspeeder.0040266C
0040371A EB 3F jmp short aspeeder.0040375B
0040371C 803D 15165500 00 cmp byte ptr ds:[551615],0
00403723 74 1C je short aspeeder.00403741 <===========毫无疑问改此跳跃为JMP可以正确注册,但无法解决启动验证,因此我们需要往上下看看.
00403725 A1 B4134D00 mov eax,dword ptr ds:[4D13B4]
0040372A 6A 40 push 40
0040372C 8D8F 2D020000 lea ecx,dword ptr ds:[edi+22D]
00403732 8D97 E7010000 lea edx,dword ptr ds:[edi+1E7]
00403738 8B00 mov eax,dword ptr ds:[eax]
0040373A E8 5DD20A00 call aspeeder.004B099C <===========很快找到注册码出错弹窗点
0040373F EB 1A jmp short aspeeder.0040375B
00403741 A1 B4134D00 mov eax,dword ptr ds:[4D13B4]
00403746 6A 40 push 40
00403748 8D8F 5D020000 lea ecx,dword ptr ds:[edi+25D]
0040374E 8D97 3C020000 lea edx,dword ptr ds:[edi+23C]
00403754 8B00 mov eax,dword ptr ds:[eax]
00403756 E8 41D20A00 call aspeeder.004B099C
0040375B 8B55 D8 mov edx,dword ptr ss:[ebp-28]
0040375E 64:8915 00000000 mov dword ptr fs:[0],edx
00403765 5F pop edi
00403766 5E pop esi
00403767 5B pop ebx
00403768 8BE5 mov esp,ebp
0040376A 5D pop ebp
0040376B C3 retn
0040376C 53 push ebx
0040376D 56 push esi
0040376E 81C4 ECF5FFFF add esp,-0A14
00403774 8BF0 mov esi,eax
00403776 803D F8524C00 00 cmp byte ptr ds:[4C52F8],0 <========这个流程也很有趣,如果我是注册版,应该还会运行,但我如果不让它运行呢,这样可以避免一些内在暗庄.那么更好的爆破点je为jnz
0040377D 0F84 0C020000 je aspeeder.0040398F
00403783 33D2 xor edx,edx
00403785 8B86 14030000 mov eax,dword ptr ds:[esi+314]
0040378B E8 80780700 call aspeeder.0047B010
00403790 33C9 xor ecx,ecx
00403792 890C24 mov dword ptr ss:[esp],ecx
00403795 33C0 xor eax,eax
00403797 894424 04 mov dword ptr ss:[esp+4],eax
0040379B 33D2 xor edx,edx
0040379D 895424 08 mov dword ptr ss:[esp+8],edx
004037A1 33C9 xor ecx,ecx
004037A3 894C24 0C mov dword ptr ss:[esp+C],ecx
004037A7 33C0 xor eax,eax
004037A9 894424 10 mov dword ptr ss:[esp+10],eax
004037AD 8D5424 04 lea edx,dword ptr ss:[esp+4]
004037B1 B8 AC574C00 mov eax,aspeeder.004C57AC ; ASCII "D0330A59"
004037B6 E8 6D550000 call aspeeder.00408D28
004037BB 8BD4 mov edx,esp
004037BD B8 B5574C00 mov eax,aspeeder.004C57B5 ; ASCII "A7456C12309EAF6BEF610A5B1F408D62B4AF7775E167656C236BC3B8D77F587E92D80DB14AC83281"
004037C2 E8 61550000 call aspeeder.00408D28
004037C7 8B15 48165500 mov edx,dword ptr ds:[551648]
004037CD 52 push edx
004037CE 68 06584C00 push aspeeder.004C5806 ; ASCII "%08X"
004037D3 8D8C24 1C020000 lea ecx,dword ptr ss:[esp+21C]
004037DA 51 push ecx
004037DB E8 682B0A00 call aspeeder.004A6348
004037E0 83C4 0C add esp,0C
004037E3 8D5424 10 lea edx,dword ptr ss:[esp+10]
004037E7 8D8424 14020000 lea eax,dword ptr ss:[esp+214]
004037EE E8 19570000 call aspeeder.00408F0C
004037F3 8D4C24 08 lea ecx,dword ptr ss:[esp+8]
004037F7 51 push ecx
004037F8 8B4C24 04 mov ecx,dword ptr ss:[esp+4]
004037FC 8B5424 08 mov edx,dword ptr ss:[esp+8]
00403800 8B4424 14 mov eax,dword ptr ss:[esp+14]
00403804 E8 9B4C0000 call aspeeder.004084A4
00403809 8D8424 14020000 lea eax,dword ptr ss:[esp+214]
00403810 8B5424 08 mov edx,dword ptr ss:[esp+8]
00403814 E8 9B570000 call aspeeder.00408FB4
00403819 68 0B584C00 push aspeeder.004C580B ; ASCII "ASPEEDER"
0040381E 8D8C24 18020000 lea ecx,dword ptr ss:[esp+218]
00403825 51 push ecx
00403826 E8 11F30900 call aspeeder.004A2B3C
0040382B 83C4 08 add esp,8
0040382E 8D5424 08 lea edx,dword ptr ss:[esp+8]
00403832 8D8424 14020000 lea eax,dword ptr ss:[esp+214]
00403839 E8 CE560000 call aspeeder.00408F0C
0040383E 8BD4 mov edx,esp
00403840 B8 88164D00 mov eax,aspeeder.004D1688 ; ASCII "C985F97A3C4E0D3BF7D35DC4148E5C47749076D668CA8464A6D2CCFB1B26183623315E5450610784D974ED5E9702A451" 很面熟啊,老弟
00403845 E8 DE540000 call aspeeder.00408D28
0040384A 8D5424 10 lea edx,dword ptr ss:[esp+10]
0040384E B8 50165500 mov eax,aspeeder.00551650 ; ASCII "A7456C12309EAF6BEF610A5B1F408D62B4AF7775E167656C236BC3B8D77F587E"
00403853 E8 B4560000 call aspeeder.00408F0C
00403858 8D4C24 0C lea ecx,dword ptr ss:[esp+C]
0040385C 51 push ecx
0040385D 8B4C24 04 mov ecx,dword ptr ss:[esp+4]
00403861 8B5424 08 mov edx,dword ptr ss:[esp+8]
00403865 8B4424 14 mov eax,dword ptr ss:[esp+14]
00403869 E8 364C0000 call aspeeder.004084A4
0040386E 8D8424 14020000 lea eax,dword ptr ss:[esp+214]
00403875 8B5424 0C mov edx,dword ptr ss:[esp+C]
00403879 E8 36570000 call aspeeder.00408FB4
0040387E 8B5424 0C mov edx,dword ptr ss:[esp+C]
00403882 8B4424 08 mov eax,dword ptr ss:[esp+8]
00403886 E8 A9360000 call aspeeder.00406F34
0040388B 85C0 test eax,eax
0040388D 8BC4 mov eax,esp
0040388F 0F94C3 sete bl
00403892 83E3 01 and ebx,1
00403895 E8 6A340000 call aspeeder.00406D04
0040389A 8D4424 04 lea eax,dword ptr ss:[esp+4]
0040389E E8 61340000 call aspeeder.00406D04
004038A3 8D4424 08 lea eax,dword ptr ss:[esp+8]
004038A7 E8 58340000 call aspeeder.00406D04
004038AC 8D4424 0C lea eax,dword ptr ss:[esp+C]
004038B0 E8 4F340000 call aspeeder.00406D04
004038B5 8D4424 10 lea eax,dword ptr ss:[esp+10]
004038B9 E8 46340000 call aspeeder.00406D04
004038BE 84DB test bl,bl <==========如果我是注册版,毫无疑问,此流程不会运行,也算半个完美爆破点,改为mov bl,1可爆破
004038C0 0F85 9E000000 jnz aspeeder.00403964
004038C6 68 80000000 push 80
004038CB 8D5424 18 lea edx,dword ptr ss:[esp+18]
004038CF 52 push edx
004038D0 68 23584C00 push aspeeder.004C5823
004038D5 68 1D584C00 push aspeeder.004C581D ; ASCII "count" 毫无疑问,次数
004038DA 68 14584C00 push aspeeder.004C5814 ; ASCII "aspeeder"
004038DF E8 76090C00 call aspeeder.004C425A ; jmp to KERNEL32.GetProfileStringA
004038E4 8D4C24 14 lea ecx,dword ptr ss:[esp+14]
004038E8 51 push ecx
004038E9 E8 76620A00 call aspeeder.004A9B64
004038EE 59 pop ecx
004038EF 3B05 E8524C00 cmp eax,dword ptr ds:[4C52E8]
004038F5 7E 05 jle short aspeeder.004038FC
004038F7 A3 E8524C00 mov dword ptr ds:[4C52E8],eax
004038FC FF05 E8524C00 inc dword ptr ds:[4C52E8]
00403902 A1 E8524C00 mov eax,dword ptr ds:[4C52E8]
00403907 83F8 32 cmp eax,32
0040390A 7F 04 jg short aspeeder.00403910
0040390C 85C0 test eax,eax
0040390E 7D 0A jge short aspeeder.0040391A
00403910 C705 E8524C00 32000>mov dword ptr ds:[4C52E8],32
0040391A 8B15 E8524C00 mov edx,dword ptr ds:[4C52E8]
00403920 52 push edx
00403921 68 25584C00 push aspeeder.004C5825 ; ASCII "%d" 变量
00403926 8D4C24 1C lea ecx,dword ptr ss:[esp+1C]
0040392A 51 push ecx
0040392B E8 182A0A00 call aspeeder.004A6348
00403930 83C4 0C add esp,0C
00403933 8D4424 14 lea eax,dword ptr ss:[esp+14]
00403937 50 push eax
00403938 68 31584C00 push aspeeder.004C5831 ; ASCII "count" 毫无疑问,次数
0040393D 68 28584C00 push aspeeder.004C5828 ; ASCII "aspeeder"
00403942 E8 AB0A0C00 call aspeeder.004C43F2 ; jmp to KERNEL32.WriteProfileStringA
00403947 8B96 10030000 mov edx,dword ptr ds:[esi+310]
0040394D 8BC6 mov eax,esi
0040394F E8 F8FBFFFF call aspeeder.0040354C
00403954 833D E8524C00 32 cmp dword ptr ds:[4C52E8],32
0040395B 7C 07 jl short aspeeder.00403964
0040395D 8BC6 mov eax,esi
0040395F E8 AC0A0700 call aspeeder.00474410
00403964 8B96 38030000 mov edx,dword ptr ds:[esi+338]
0040396A 807A 38 00 cmp byte ptr ds:[edx+38],0
0040396E 74 11 je short aspeeder.00403981
00403970 8B15 F0524C00 mov edx,dword ptr ds:[4C52F0]
00403976 8B86 6C030000 mov eax,dword ptr ds:[esi+36C]
0040397C E8 D3E60800 call aspeeder.00492054
00403981 E8 7AE6FFFF call aspeeder.00402000
00403986 C605 F8524C00 00 mov byte ptr ds:[4C52F8],0
0040398D EB 12 jmp short aspeeder.004039A1
0040398F E8 6CE6FFFF call aspeeder.00402000
00403994 8B96 6C030000 mov edx,dword ptr ds:[esi+36C]
0040399A 8BC6 mov eax,esi
0040399C E8 3BF3FFFF call aspeeder.00402CDC
004039A1 B2 01 mov dl,1
004039A3 8B86 14030000 mov eax,dword ptr ds:[esi+314]
004039A9 E8 62760700 call aspeeder.0047B010
004039AE 81C4 140A0000 add esp,0A14
004039B4 5E pop esi
004039B5 5B pop ebx
004039B6 C3 retn
做个内存补丁吧,SMC应该也可以,随便了,完成后,重新测试看看,^_^,没有失效,收工。3分钟搞定.
原版去这里下:
http://www.skycn.com/soft/11003.html
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)