一款智能门锁软件的破解。
本帖最后由 隐藏英雄 于 2016-12-25 17:11 编辑由于一朋友把一款门锁软件的授权卡丢失。找不到厂价售后,所以我本着为人民服务的态度逆向了这款软件,仅做测试与学习,并不用于商业用途。所以。。。具体分析步骤如下。首先安装好程序,对主程序进行查壳。是一款由delphi编写的程序。没有加壳。http://0912itw.com/wp-content/uploads/2014/wztp/chake.jpg然后我们载入OD,进行分析。搜索关键词后发现都是一些没用的信息。如下图。http://0912itw.com/wp-content/uploads/2014/wztp/gjc.jpg到这里我们只能通过其他方法继续了,果断采用F12暂停法。结果发现找到的是通用按钮事件,会断掉很多按钮,并不是我们要的注册按钮事件。如下图http://0912itw.com/wp-content/uploads/2014/wztp/ansj.jpg通过下查找#740E8BD38B83????????FF93????????#地址,反复使用ATRL+L来下断检测发现非常累而且每找到。所以我们还得通过其他方法来解决此问题。首先考虑到程序是用delphi编写的,这样的话我们可以通过DEDE来查找按钮事件的关键CALL,于是用DEDE加载程序查看过程如下图。(Button1 此类事件即为按钮事件)http://0912itw.com/wp-content/uploads/2014/wztp/DEDEan.jpg发现单元很多,按钮也很多。找了一会感觉太繁琐。点到窗体看了一下。如下图http://0912itw.com/wp-content/uploads/2014/wztp/DEDEct.jpg看了几个窗体发现了相关东西,通过模块名。在过程中找到了关键按钮地址。如上面过程图片。中的btnregclick地址。在OD中来到此发现代码如下
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:
005CE817 |. 64:8920 mov dword ptr fs:,esp
005CE81A |. FF83 30030000 inc dword ptr ds:
在005CE7F8处下断发现确实可以断下注册按钮,而且不影响到其他按钮事件。http://0912itw.com/wp-content/uploads/2014/wztp/yz.jpg于是往下看许多条件跳转,许多CALL,许多强制跳转(这些强制跳转都跳到了同一地址)。结果分析各个CALL,最终找到了注册成功的信息。上面许多验证CALL包括了。序列号检测,时间检测,注册码检测等等。同时有试用版注册成功,正式版注册成功等,如下图。
http://0912itw.com/wp-content/uploads/2014/wztp/zsbzccg.jpg最终用一个jmp直接跳到试用版版注册成功,同时nop掉下面的跳转即完成了爆破任务。http://0912itw.com/wp-content/uploads/2014/wztp/zsbzccg.jpg具体代码如下: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:
005CE817|.64:8920 mov dword ptr fs:,esp
005CE81A|.FF83 30030000 inc dword ptr ds:
005CE820|.83BB 30030000>cmp dword ptr ds:,0x3
005CE827 7E 21 jle XPCloudLo.005CE84A ;不大于3时转移到 005ce84a
005CE829 8D45 E8 lea eax,dword ptr ss:
005CE82C|.8B15 F88F5D00 mov edx,dword ptr ds: ;PCloudLo.005DAEA0
005CE832|.81C2 F98A0000 add edx,0x8AF9
005CE838|.E8 435EE3FF call PCloudLo.00404680 ;小于等于3则跳,大于则CLL连续3次错误,重新读取授权卡
005CE83D|.8B45 E8 mov eax,
005CE840|.E8 87CAE6FF call PCloudLo.0043B2CC
005CE845|.E9 ED020000 jmp PCloudLo.005CEB37
005CE84A|>8D55 E4 lea edx,
005CE84D|.A1 20945D00 mov eax,dword ptr ds:
005CE852|.8B00 mov eax,dword ptr ds:
005CE854|.E8 9FA7E3FF call PCloudLo.00408FF8 ;检测是否读过授权卡
005CE859|.837D E4 00 cmp ,0x0
005CE85D 75 21 jnz XPCloudLo.005CE880
005CE85F|.8D45 E0 lea eax,
005CE862|.8B15 F88F5D00 mov edx,dword ptr ds: ;PCloudLo.005DAEA0
005CE868|.81C2 C28B0000 add edx,0x8BC2
005CE86E|.E8 0D5EE3FF call PCloudLo.00404680 ;没有读授权卡无法得到序列号
005CE873|.8B45 E0 mov eax,
005CE876|.E8 51CAE6FF call PCloudLo.0043B2CC
005CE87B|.E9 B7020000 jmp PCloudLo.005CEB37
005CE880|>8D55 D8 lea edx,
005CE883|.8B83 10030000 mov eax,dword ptr ds:
005CE889|.E8 169CEAFF call PCloudLo.004784A4
005CE88E|.8B45 D8 mov eax,
005CE891|.8D55 DC lea edx,
005CE894|.E8 5FA7E3FF call PCloudLo.00408FF8
005CE899|.837D DC 00 cmp ,0x0
005CE89D 75 21 jnz XPCloudLo.005CE8C0
005CE89F|.8D45 D4 lea eax,
005CE8A2|.8B15 F88F5D00 mov edx,dword ptr ds: ;PCloudLo.005DAEA0
005CE8A8|.81C2 8B8C0000 add edx,0x8C8B
005CE8AE|.E8 CD5DE3FF call PCloudLo.00404680 ;没有检测到输入的注册码,提示输入注册码
005CE8B3|.8B45 D4 mov eax,
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,
005CE8CC|.8B15 F88F5D00 mov edx,dword ptr ds: ;PCloudLo.005DAEA0
005CE8D2|.81C2 96B40000 add edx,0xB496
005CE8D8|.E8 A35DE3FF call PCloudLo.00404680 ;检测本地时间是否错误
005CE8DD|.8B45 D0 mov eax,
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:
005CE8F5|.9B wait
005CE8F6|.B8 9CEB5C00 mov eax,PCloudLo.005CEB9C ;Index
005CE8FB|.E8 089AFBFF call PCloudLo.00588308
005CE900|.8D55 EC lea edx,
005CE903|.B8 ACEB5C00 mov eax,PCloudLo.005CEBAC ;CurrReaderInfoEx1
005CE908|.E8 078EFBFF call PCloudLo.00587714
005CE90D|.8D55 CC lea edx,
005CE910|.8B83 10030000 mov eax,dword ptr ds:
005CE916|.E8 899BEAFF call PCloudLo.004784A4
005CE91B|.8B45 CC mov eax,
005CE91E|.8B55 EC mov edx,
005CE921|.E8 025FE3FF call PCloudLo.00404828
005CE926 75 21 jnz XPCloudLo.005CE949
005CE928|.8D45 C8 lea eax,
005CE92B|.8B15 F88F5D00 mov edx,dword ptr ds: ;PCloudLo.005DAEA0
005CE931|.81C2 AF8F0000 add edx,0x8FAF
005CE937|.E8 445DE3FF call PCloudLo.00404680 ;注册失败
005CE93C|.8B45 C8 mov eax,
005CE93F|.E8 88C9E6FF call PCloudLo.0043B2CC
005CE944|.E9 EE010000 jmp PCloudLo.005CEB37
005CE949|>33C0 xor eax,eax
005CE94B|.8945 F8 mov ,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,
005CE95D|.8D55 F8 lea edx,
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,
005CE96E|.8B15 F88F5D00 mov edx,dword ptr ds: ;PCloudLo.005DAEA0
005CE974|.81C2 E68E0000 add edx,0x8EE6
005CE97A|.E8 015DE3FF call PCloudLo.00404680 ;注册码错误
005CE97F|.8B45 C4 mov eax,
005CE982|.E8 45C9E6FF call PCloudLo.0043B2CC
005CE987|.E9 AB010000 jmp PCloudLo.005CEB37
005CE98C|>3B75 FC cmp esi,
005CE98F 74 21 je XPCloudLo.005CE9B2
005CE991|.8D45 C0 lea eax,
005CE994|.8B15 F88F5D00 mov edx,dword ptr ds: ;PCloudLo.005DAEA0
005CE99A|.81C2 E68E0000 add edx,0x8EE6
005CE9A0|.E8 DB5CE3FF call PCloudLo.00404680
005CE9A5|.8B45 C0 mov eax,
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:
005CE9BD|.9B wait
005CE9BE|.8B45 F8 mov eax,
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 ,eax
005CE9F4|.8BCF mov ecx,edi
005CE9F6|.C1E1 10 shl ecx,0x10
005CE9F9|.03CA add ecx,edx
005CE9FB|.8B7D F4 mov edi,
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:
005CEA26 .33C0 xor eax,eax
005CEA28 .E8 93ABE3FF call PCloudLo.004095C0
005CEA2D .8B45 B8 mov eax,dword ptr ss:
005CEA30 .8D4D BC lea ecx,dword ptr ss:
005CEA33 .BA 08000000 mov edx,0x8
005CEA38 .E8 5382FBFF call PCloudLo.00586C90
005CEA3D .8B45 BC mov eax,dword ptr ss:
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:
005CEA4A .33C0 xor eax,eax
005CEA4C .E8 6FABE3FF call PCloudLo.004095C0
005CEA51 .8B45 B0 mov eax,dword ptr ss:
005CEA54 .8D4D B4 lea ecx,dword ptr ss:
005CEA57 .BA 08000000 mov edx,0x8
005CEA5C .E8 2F82FBFF call PCloudLo.00586C90
005CEA61 .8B55 B4 mov edx,dword ptr ss:
005CEA64 .8D45 F0 lea eax,dword ptr ss:
005CEA67 .59 pop ecx
005CEA68 .E8 BB5CE3FF call PCloudLo.00404728
005CEA6D .817D F8 70010>cmp dword ptr ss:,0x170
005CEA74 EB 2A jmp XPCloudLo.005CEAA0
005CEA76 .817D F8 85010>cmp dword ptr ss:,0x185
005CEA7D .74 21 je XPCloudLo.005CEAA0
005CEA7F .8D45 AC lea eax,dword ptr ss:
005CEA82 .8B15 F88F5D00 mov edx,dword ptr ds: ;PCloudLo.005DAEA0
005CEA88 .81C2 AF8F0000 add edx,0x8FAF
005CEA8E .E8 ED5BE3FF call PCloudLo.00404680
005CEA93 .8B45 AC mov eax,dword ptr ss:
005CEA96 .E8 31C8E6FF call PCloudLo.0043B2CC
005CEA9B .E9 97000000 jmp PCloudLo.005CEB37
005CEAA0 >817D F8 70010>cmp dword ptr ss:,0x170
005CEAA7 EB 1C jmp XPCloudLo.005CEAC5
005CEAA9 .8D45 A8 lea eax,dword ptr ss:
005CEAAC .8B15 F88F5D00 mov edx,dword ptr ds: ;PCloudLo.005DAEA0
005CEAB2 .81C2 78900000 add edx,0x9078
005CEAB8 .E8 C35BE3FF call PCloudLo.00404680
005CEABD .8B45 A8 mov eax,dword ptr ss:
005CEAC0 .E8 07C8E6FF call PCloudLo.0043B2CC ;试用版注册成功
005CEAC5 >817D F8 85010>cmp dword ptr ss:,0x185
005CEACC 90 nop
005CEACD 90 nop
005CEACE .33C0 xor eax,eax
005CEAD0 .8983 30030000 mov dword ptr ds:,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:
005CEAE8 .8B15 F88F5D00 mov edx,dword ptr ds: ;PCloudLo.005DAEA0
005CEAEE .81C2 41910000 add edx,0x9141
005CEAF4 .E8 875BE3FF call PCloudLo.00404680
005CEAF9 .8B45 A4 mov eax,dword ptr ss:
005CEAFC .E8 CBC7E6FF call PCloudLo.0043B2CC ;正式版注册成功
005CEB01 >8B55 F0 mov edx,dword ptr ss:
005CEB04 .B8 FCEB5C00 mov eax,PCloudLo.005CEBFC ;ASCII "CurrReaderInfoEx"
005CEB09 .E8 F28EFBFF call PCloudLo.00587A00
005CEB0E .8D55 A0 lea edx,dword ptr ss:
005CEB11 .8B83 10030000 mov eax,dword ptr ds:
005CEB17 .E8 8899EAFF call PCloudLo.004784A4
005CEB1C .8B55 A0 mov edx,dword ptr ss:
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
chengingcom 发表于 2016-1-14 20:27
你好 不知道你的门锁软件有没有遇到 2016不能读卡的问题。如果你解决了请告诉我一声谢谢。研究了几天 知道 ...
提醒一下,论坛禁止留QQ号 感谢分享破路历程 。 楼主果然很强大啊!!! 果断给力,值得大力支持,谢谢。 感谢分享破路历程 学习 楼主果然很强大啊!!! 学习了,谢谢分享 感谢分享。你这不像是新手啊 楼楼好流弊呀。。学习了。