本帖最后由 隐藏英雄 于 2016-12-25 17:11 编辑
由于一朋友把一款门锁软件的授权卡丢失。找不到厂价售后,所以我本着为人民服务的态度逆向了这款软件,仅做测试与学习,并不用于商业用途。所以。。。 具体分析步骤如下。 首先安装好程序,对主程序进行查壳。是一款由delphi编写的程序。没有加壳。 然后我们载入OD,进行分析。搜索关键词后发现都是一些没用的信息。如下图。 到这里我们只能通过其他方法继续了,果断采用F12暂停法。结果发现找到的是通用按钮事件,会断掉很多按钮,并不是我们要的注册按钮事件。如下图 通过下查找#740E8BD38B83????????FF93????????#地址,反复使用ATRL+L来下断检测发现非常累而且每找到。 所以我们还得通过其他方法来解决此问题。首先考虑到程序是用delphi编写的,这样的话我们可以通过DEDE来查找按钮事件的关键CALL,于是用DEDE加载程序查看过程如下图。(Button1 此类事件即为按钮事件) 发现单元很多,按钮也很多。找了一会感觉太繁琐。点到窗体看了一下。如下图 看了几个窗体发现了相关东西,通过模块名。在过程中找到了关键按钮地址。如上面过程图片。中的btnregclick地址。在OD中来到此发现代码如下 [Asm] 纯文本查看 复制代码
005CE7F0 . E8 3778ECFF call PCloudLo.0049602C
005CE7F5 . C3 retn
005CE7F6 8BC0 mov eax,eax
005CE7F8 /. 55 push ebp
005CE7F9 |. 8BEC mov ebp,esp
005CE7FB |. B9 0C000000 mov ecx,0xC
005CE800 |> 6A 00 /push 0x0
005CE802 |. 6A 00 |push 0x0
005CE804 |. 49 |dec ecx
005CE805 |.^ 75 F9 \jnz XPCloudLo.005CE800
005CE807 |. 53 push ebx
005CE808 |. 56 push esi
005CE809 |. 57 push edi
005CE80A |. 8BD8 mov ebx,eax
005CE80C |. 33C0 xor eax,eax
005CE80E |. 55 push ebp
005CE80F |. 68 84EB5C00 push PCloudLo.005CEB84
005CE814 |. 64:FF30 push dword ptr fs:[eax]
005CE817 |. 64:8920 mov dword ptr fs:[eax],esp
005CE81A |. FF83 30030000 inc dword ptr ds:[ebx+0x330]
在005CE7F8处下断发现确实可以断下注册按钮,而且不影响到其他按钮事件。 于是往下看许多条件跳转,许多CALL,许多强制跳转(这些强制跳转都跳到了同一地址)。结果分析各个CALL,最终找到了注册成功的信息。上面许多验证CALL包括了。序列号检测,时间检测,注册码检测等等。同时有试用版注册成功,正式版注册成功等,如下图。 最终用一个jmp直接跳到试用版版注册成功,同时nop掉下面的跳转即完成了爆破任务。 具体代码如下: [Asm] 纯文本查看 复制代码 005CE7F0 . E8 3778ECFF call PCloudLo.0049602C
005CE7F5 . C3 retn
005CE7F6 8BC0 mov eax,eax
005CE7F8 /. 55 push ebp
005CE7F9 |. 8BEC mov ebp,esp
005CE7FB |. B9 0C000000 mov ecx,0xC
005CE800 |> 6A 00 /push 0x0
005CE802 |. 6A 00 |push 0x0
005CE804 |. 49 |dec ecx
005CE805 |.^ 75 F9 \jnz XPCloudLo.005CE800
005CE807 |. 53 push ebx
005CE808 |. 56 push esi
005CE809 |. 57 push edi
005CE80A |. 8BD8 mov ebx,eax
005CE80C |. 33C0 xor eax,eax
005CE80E |. 55 push ebp
005CE80F |. 68 84EB5C00 push PCloudLo.005CEB84
005CE814 |. 64:FF30 push dword ptr fs:[eax]
005CE817 |. 64:8920 mov dword ptr fs:[eax],esp
005CE81A |. FF83 30030000 inc dword ptr ds:[ebx+0x330]
005CE820 |. 83BB 30030000>cmp dword ptr ds:[ebx+0x330],0x3
005CE827 7E 21 jle XPCloudLo.005CE84A ; 不大于3时转移到 005ce84a
005CE829 8D45 E8 lea eax,dword ptr ss:[ebp-0x18]
005CE82C |. 8B15 F88F5D00 mov edx,dword ptr ds:[0x5D8FF8] ; PCloudLo.005DAEA0
005CE832 |. 81C2 F98A0000 add edx,0x8AF9
005CE838 |. E8 435EE3FF call PCloudLo.00404680 ; 小于等于3则跳,大于则CLL连续3次错误,重新读取授权卡
005CE83D |. 8B45 E8 mov eax,[local.6]
005CE840 |. E8 87CAE6FF call PCloudLo.0043B2CC
005CE845 |. E9 ED020000 jmp PCloudLo.005CEB37
005CE84A |> 8D55 E4 lea edx,[local.7]
005CE84D |. A1 20945D00 mov eax,dword ptr ds:[0x5D9420]
005CE852 |. 8B00 mov eax,dword ptr ds:[eax]
005CE854 |. E8 9FA7E3FF call PCloudLo.00408FF8 ; 检测是否读过授权卡
005CE859 |. 837D E4 00 cmp [local.7],0x0
005CE85D 75 21 jnz XPCloudLo.005CE880
005CE85F |. 8D45 E0 lea eax,[local.8]
005CE862 |. 8B15 F88F5D00 mov edx,dword ptr ds:[0x5D8FF8] ; PCloudLo.005DAEA0
005CE868 |. 81C2 C28B0000 add edx,0x8BC2
005CE86E |. E8 0D5EE3FF call PCloudLo.00404680 ; 没有读授权卡无法得到序列号
005CE873 |. 8B45 E0 mov eax,[local.8]
005CE876 |. E8 51CAE6FF call PCloudLo.0043B2CC
005CE87B |. E9 B7020000 jmp PCloudLo.005CEB37
005CE880 |> 8D55 D8 lea edx,[local.10]
005CE883 |. 8B83 10030000 mov eax,dword ptr ds:[ebx+0x310]
005CE889 |. E8 169CEAFF call PCloudLo.004784A4
005CE88E |. 8B45 D8 mov eax,[local.10]
005CE891 |. 8D55 DC lea edx,[local.9]
005CE894 |. E8 5FA7E3FF call PCloudLo.00408FF8
005CE899 |. 837D DC 00 cmp [local.9],0x0
005CE89D 75 21 jnz XPCloudLo.005CE8C0
005CE89F |. 8D45 D4 lea eax,[local.11]
005CE8A2 |. 8B15 F88F5D00 mov edx,dword ptr ds:[0x5D8FF8] ; PCloudLo.005DAEA0
005CE8A8 |. 81C2 8B8C0000 add edx,0x8C8B
005CE8AE |. E8 CD5DE3FF call PCloudLo.00404680 ; 没有检测到输入的注册码,提示输入注册码
005CE8B3 |. 8B45 D4 mov eax,[local.11]
005CE8B6 |. E8 11CAE6FF call PCloudLo.0043B2CC
005CE8BB |. E9 77020000 jmp PCloudLo.005CEB37
005CE8C0 |> E8 639BFBFF call PCloudLo.00588428
005CE8C5 |. 84C0 test al,al
005CE8C7 75 21 jnz XPCloudLo.005CE8EA
005CE8C9 |. 8D45 D0 lea eax,[local.12]
005CE8CC |. 8B15 F88F5D00 mov edx,dword ptr ds:[0x5D8FF8] ; PCloudLo.005DAEA0
005CE8D2 |. 81C2 96B40000 add edx,0xB496
005CE8D8 |. E8 A35DE3FF call PCloudLo.00404680 ; 检测本地时间是否错误
005CE8DD |. 8B45 D0 mov eax,[local.12]
005CE8E0 |. E8 E7C9E6FF call PCloudLo.0043B2CC
005CE8E5 |. E9 4D020000 jmp PCloudLo.005CEB37
005CE8EA |> E8 99CEE3FF call PCloudLo.0040B788
005CE8EF |. 83C4 F8 add esp,-0x8
005CE8F2 |. DD1C24 fstp qword ptr ss:[esp]
005CE8F5 |. 9B wait
005CE8F6 |. B8 9CEB5C00 mov eax,PCloudLo.005CEB9C ; Index
005CE8FB |. E8 089AFBFF call PCloudLo.00588308
005CE900 |. 8D55 EC lea edx,[local.5]
005CE903 |. B8 ACEB5C00 mov eax,PCloudLo.005CEBAC ; CurrReaderInfoEx1
005CE908 |. E8 078EFBFF call PCloudLo.00587714
005CE90D |. 8D55 CC lea edx,[local.13]
005CE910 |. 8B83 10030000 mov eax,dword ptr ds:[ebx+0x310]
005CE916 |. E8 899BEAFF call PCloudLo.004784A4
005CE91B |. 8B45 CC mov eax,[local.13]
005CE91E |. 8B55 EC mov edx,[local.5]
005CE921 |. E8 025FE3FF call PCloudLo.00404828
005CE926 75 21 jnz XPCloudLo.005CE949
005CE928 |. 8D45 C8 lea eax,[local.14]
005CE92B |. 8B15 F88F5D00 mov edx,dword ptr ds:[0x5D8FF8] ; PCloudLo.005DAEA0
005CE931 |. 81C2 AF8F0000 add edx,0x8FAF
005CE937 |. E8 445DE3FF call PCloudLo.00404680 ; 注册失败
005CE93C |. 8B45 C8 mov eax,[local.14]
005CE93F |. E8 88C9E6FF call PCloudLo.0043B2CC
005CE944 |. E9 EE010000 jmp PCloudLo.005CEB37
005CE949 |> 33C0 xor eax,eax
005CE94B |. 8945 F8 mov [local.2],eax
005CE94E |. B8 C8EB5C00 mov eax,PCloudLo.005CEBC8 ; CurrReaderInfo
005CE953 |. E8 2C8FFBFF call PCloudLo.00587884
005CE958 |. 8BF0 mov esi,eax
005CE95A |. 8D4D FC lea ecx,[local.1]
005CE95D |. 8D55 F8 lea edx,[local.2]
005CE960 |. 8BC3 mov eax,ebx
005CE962 |. E8 A9020000 call PCloudLo.005CEC10
005CE967 |. 84C0 test al,al
005CE969 75 21 jnz XPCloudLo.005CE98C
005CE96B |. 8D45 C4 lea eax,[local.15]
005CE96E |. 8B15 F88F5D00 mov edx,dword ptr ds:[0x5D8FF8] ; PCloudLo.005DAEA0
005CE974 |. 81C2 E68E0000 add edx,0x8EE6
005CE97A |. E8 015DE3FF call PCloudLo.00404680 ; 注册码错误
005CE97F |. 8B45 C4 mov eax,[local.15]
005CE982 |. E8 45C9E6FF call PCloudLo.0043B2CC
005CE987 |. E9 AB010000 jmp PCloudLo.005CEB37
005CE98C |> 3B75 FC cmp esi,[local.1]
005CE98F 74 21 je XPCloudLo.005CE9B2
005CE991 |. 8D45 C0 lea eax,[local.16]
005CE994 |. 8B15 F88F5D00 mov edx,dword ptr ds:[0x5D8FF8] ; PCloudLo.005DAEA0
005CE99A |. 81C2 E68E0000 add edx,0x8EE6
005CE9A0 |. E8 DB5CE3FF call PCloudLo.00404680
005CE9A5 |. 8B45 C0 mov eax,[local.16]
005CE9A8 |. E8 1FC9E6FF call PCloudLo.0043B2CC
005CE9AD |. E9 85010000 jmp PCloudLo.005CEB37
005CE9B2 |> E8 71CDE3FF call PCloudLo.0040B728
005CE9B7 |. 83C4 F8 add esp,-0x8
005CE9BA |. DD1C24 fstp qword ptr ss:[esp]
005CE9BD |. 9B wait
005CE9BE |. 8B45 F8 mov eax,[local.2]
005CE9C1 |. E8 D2CEECFF call PCloudLo.0049B898 ; 试用版注册成功
005CE9C6 |. E8 AD42E3FF call PCloudLo.00402C78
005CE9CB |. 8BF0 mov esi,eax
005CE9CD |. C1EE 10 shr esi,0x10
005CE9D0 |. 8BF8 mov edi,eax
005CE9D2 |. 81E7 FFFF0000 and edi,0xFFFF
005CE9D8 |. E8 DF41E3FF call PCloudLo.00402BBC
005CE9DD |. B8 FEFFFF7F mov eax,0x7FFFFFFE
005CE9E2 |. E8 E944E3FF call PCloudLo.00402ED0
005CE9E7 |. 8BD0 mov edx,eax
005CE9E9 |. C1EA 10 shr edx,0x10
005CE9EC |. 25 FFFF0000 and eax,0xFFFF
005CE9F1 |. 8945 F4 mov [local.3],eax
005CE9F4 |. 8BCF mov ecx,edi
005CE9F6 |. C1E1 10 shl ecx,0x10
005CE9F9 |. 03CA add ecx,edx
005CE9FB |. 8B7D F4 mov edi,[local.3]
005CE9FE |. C1E7 10 shl edi,0x10
005CEA01 |. 03FE add edi,esi
005CEA03 |. 8BC1 mov eax,ecx
005CEA05 |. 33D2 xor edx,edx
005CEA07 |. 52 push edx
005CEA08 |. 50 push eax
005CEA09 |. E8 7E9BFBFF call <jmp.&PYHDKey2004.ReSore>
005CEA0E |. 8BF0 mov esi,eax
005CEA10 |. 8BC7 mov eax,edi
005CEA12 |. 33D2 xor edx,edx
005CEA14 |. 52 push edx
005CEA15 |. 50 push eax
005CEA16 |. E8 719BFBFF call <jmp.&PYHDKey2004.ReSore>
005CEA1B |. 8BF8 mov edi,eax
005CEA1D |. 8BC7 mov eax,edi
005CEA1F |. 33D2 xor edx,edx
005CEA21 . 52 push edx
005CEA22 . 50 push eax
005CEA23 . 8D55 B8 lea edx,dword ptr ss:[ebp-0x48]
005CEA26 . 33C0 xor eax,eax
005CEA28 . E8 93ABE3FF call PCloudLo.004095C0
005CEA2D . 8B45 B8 mov eax,dword ptr ss:[ebp-0x48]
005CEA30 . 8D4D BC lea ecx,dword ptr ss:[ebp-0x44]
005CEA33 . BA 08000000 mov edx,0x8
005CEA38 . E8 5382FBFF call PCloudLo.00586C90
005CEA3D . 8B45 BC mov eax,dword ptr ss:[ebp-0x44]
005CEA40 . 50 push eax
005CEA41 . 8BC6 mov eax,esi
005CEA43 . 33D2 xor edx,edx
005CEA45 . 52 push edx
005CEA46 . 50 push eax
005CEA47 . 8D55 B0 lea edx,dword ptr ss:[ebp-0x50]
005CEA4A . 33C0 xor eax,eax
005CEA4C . E8 6FABE3FF call PCloudLo.004095C0
005CEA51 . 8B45 B0 mov eax,dword ptr ss:[ebp-0x50]
005CEA54 . 8D4D B4 lea ecx,dword ptr ss:[ebp-0x4C]
005CEA57 . BA 08000000 mov edx,0x8
005CEA5C . E8 2F82FBFF call PCloudLo.00586C90
005CEA61 . 8B55 B4 mov edx,dword ptr ss:[ebp-0x4C]
005CEA64 . 8D45 F0 lea eax,dword ptr ss:[ebp-0x10]
005CEA67 . 59 pop ecx
005CEA68 . E8 BB5CE3FF call PCloudLo.00404728
005CEA6D . 817D F8 70010>cmp dword ptr ss:[ebp-0x8],0x170
005CEA74 EB 2A jmp XPCloudLo.005CEAA0
005CEA76 . 817D F8 85010>cmp dword ptr ss:[ebp-0x8],0x185
005CEA7D . 74 21 je XPCloudLo.005CEAA0
005CEA7F . 8D45 AC lea eax,dword ptr ss:[ebp-0x54]
005CEA82 . 8B15 F88F5D00 mov edx,dword ptr ds:[0x5D8FF8] ; PCloudLo.005DAEA0
005CEA88 . 81C2 AF8F0000 add edx,0x8FAF
005CEA8E . E8 ED5BE3FF call PCloudLo.00404680
005CEA93 . 8B45 AC mov eax,dword ptr ss:[ebp-0x54]
005CEA96 . E8 31C8E6FF call PCloudLo.0043B2CC
005CEA9B . E9 97000000 jmp PCloudLo.005CEB37
005CEAA0 > 817D F8 70010>cmp dword ptr ss:[ebp-0x8],0x170
005CEAA7 EB 1C jmp XPCloudLo.005CEAC5
005CEAA9 . 8D45 A8 lea eax,dword ptr ss:[ebp-0x58]
005CEAAC . 8B15 F88F5D00 mov edx,dword ptr ds:[0x5D8FF8] ; PCloudLo.005DAEA0
005CEAB2 . 81C2 78900000 add edx,0x9078
005CEAB8 . E8 C35BE3FF call PCloudLo.00404680
005CEABD . 8B45 A8 mov eax,dword ptr ss:[ebp-0x58]
005CEAC0 . E8 07C8E6FF call PCloudLo.0043B2CC ; 试用版注册成功
005CEAC5 > 817D F8 85010>cmp dword ptr ss:[ebp-0x8],0x185
005CEACC 90 nop
005CEACD 90 nop
005CEACE . 33C0 xor eax,eax
005CEAD0 . 8983 30030000 mov dword ptr ds:[ebx+0x330],eax
005CEAD6 . BA E0EB5C00 mov edx,PCloudLo.005CEBE0 ; ASCII "2007"
005CEADB . B8 F0EB5C00 mov eax,PCloudLo.005CEBF0 ; ASCII "sum"
005CEAE0 . E8 1B8FFBFF call PCloudLo.00587A00
005CEAE5 . 8D45 A4 lea eax,dword ptr ss:[ebp-0x5C]
005CEAE8 . 8B15 F88F5D00 mov edx,dword ptr ds:[0x5D8FF8] ; PCloudLo.005DAEA0
005CEAEE . 81C2 41910000 add edx,0x9141
005CEAF4 . E8 875BE3FF call PCloudLo.00404680
005CEAF9 . 8B45 A4 mov eax,dword ptr ss:[ebp-0x5C]
005CEAFC . E8 CBC7E6FF call PCloudLo.0043B2CC ; 正式版注册成功
005CEB01 > 8B55 F0 mov edx,dword ptr ss:[ebp-0x10]
005CEB04 . B8 FCEB5C00 mov eax,PCloudLo.005CEBFC ; ASCII "CurrReaderInfoEx"
005CEB09 . E8 F28EFBFF call PCloudLo.00587A00
005CEB0E . 8D55 A0 lea edx,dword ptr ss:[ebp-0x60]
005CEB11 . 8B83 10030000 mov eax,dword ptr ds:[ebx+0x310]
005CEB17 . E8 8899EAFF call PCloudLo.004784A4
005CEB1C . 8B55 A0 mov edx,dword ptr ss:[ebp-0x60]
005CEB1F . B8 ACEB5C00 mov eax,PCloudLo.005CEBAC ; ASCII "CurrReaderInfoEx1"
005CEB24 . E8 D78EFBFF call PCloudLo.00587A00
005CEB29 . E8 CA92FBFF call PCloudLo.00587DF8
005CEB2E . DDD8 fstp st
005CEB30 . 8BC3 mov eax,ebx
005CEB32 . E8 F574ECFF call PCloudLo.0049602C
005CEB37 > 33C0 xor eax,eax ; 跳到这里的话点注册没反映 注册功能失效
005CEB39 . 5A pop edx
005CEB3A . 59 pop ecx
005CEB3B . 59 pop ecx
|