QQ_9DE748 发表于 2015-6-7 08:14

申 请 I D : mic102

1、申 请 I D :mic102
2、个人邮箱:974807@qq.com
3、原创破文:

################################################################################################
软件名称: Access数据库密码破解器 3.45
下载地址: http://www.skycn.com/soft/23984.html

破解之后获取的注册码----------用户名:1234 注册码:2E0455703466A10F
################################################################################################
pedit 查壳 ---ASPack 2.12 -> Alexey Solodovnikov
直接脱壳机搞定--ASPack UnPacker.exe(脱壳机)
脱壳后pedit查壳: Borland Delphi 6.0 - 7.0
################################################################################################
OD载入---查找字符串“注册”
---查到-- “文本字符串=注册完成,请重新运行程序!” 双击反汇编跟踪
在反汇编窗口中可以看到reguser 及regno   software\acpass
猜测应该是放入到注册表中
接下来两种思路
1.---查找字符串---reguser regno 及software\acpass
2.---注册表下断点(BP RegQueryValueExA) 重载运行--查看reguser及regno
################################################################################################
########################注册表断点法############
运行 注意堆栈的显示----直到读取regno时----执行运行到用户代码
然后单步走一段代码----最后到达下面代码--
004D3BAB|.E8 1C46F9FF   call ACpass_u.004681CC
004D3BB0|.B1 01         mov cl,0x1
004D3BB2|.BA 403D4D00   mov edx,ACpass_u.004D3D40                ;Software\ACPass
004D3BB7|.8BC6          mov eax,esi
004D3BB9|.E8 7246F9FF   call ACpass_u.00468230
004D3BBE|.8D4D F0       lea ecx,
004D3BC1|.BA 583D4D00   mov edx,ACpass_u.004D3D58                ;RegUser
004D3BC6|.8BC6          mov eax,esi
004D3BC8|.E8 4B48F9FF   call ACpass_u.00468418
004D3BCD|.8B55 F0       mov edx,
004D3BD0|.B8 E4B14D00   mov eax,ACpass_u.004DB1E4
004D3BD5|.E8 F608F3FF   call ACpass_u.004044D0
004D3BDA|.8D4D EC       lea ecx,
004D3BDD|.BA 683D4D00   mov edx,ACpass_u.004D3D68                ;RegNo
004D3BE2|.8BC6          mov eax,esi
004D3BE4|.E8 2F48F9FF   call ACpass_u.00468418
004D3BE9|.8B45 EC       mov eax,
004D3BEC|.50            push eax

往下看----注意堆栈及寄存器信息
004D3BE9|.8B45 EC       mov eax,
004D3BEC|.50            push eax
004D3BED|.8D4D E8       lea ecx,
004D3BF0|.BA 783D4D00   mov edx,ACpass_u.004D3D78                ;acpassChina
004D3BF5|.A1 E4B14D00   mov eax,dword ptr ds:
004D3BFA|.E8 D5E2FFFF   call ACpass_u.004D1ED4
004D3BFF|.8B55 E8       mov edx,
004D3C02|.58            pop eax
004D3C03|.E8 700CF3FF   call ACpass_u.00404878   -------关键CALL--比较真假注册码
004D3C08|.75 07         jnz XACpass_u.004D3C11
004D3C0A|.C605 E0B14D00>mov byte ptr ds:,0x1
004D3C11|>8BC6          mov eax,esi
004D3C13|.E8 D8FAF2FF   call ACpass_u.004036F0
004D3C18|.803D E0B14D00>cmp byte ptr ds:,0x0
004D3C1F|.75 27         jnz XACpass_u.004D3C48
004D3C21|.8D55 E4       lea edx,
004D3C24|.8BB3 18030000 mov esi,dword ptr ds:
004D3C2A|.8BC6          mov eax,esi
004D3C2C|.E8 8714FCFF   call ACpass_u.004950B8
004D3C31|.8D45 E4       lea eax,
004D3C34|.BA 8C3D4D00   mov edx,ACpass_u.004D3D8C                ;   - 未购买用户
004D3C39|.E8 FE0AF3FF   call ACpass_u.0040473C


跟入关键CALL 来到下面代码:

00404878/$53            push ebx
00404879|.56            push esi
0040487A|.57            push edi
0040487B|.89C6          mov esi,eax
0040487D|.89D7          mov edi,edx
0040487F|.39D0          cmp eax,edx         -------------比较真假注册码
00404881      0F84 8F000000 je ACpass_u.00404916   ---------关键跳转直接改为jmp
00404887|.85F6          test esi,esi
00404889|.74 68         je XACpass_u.004048F3
0040488B|.85FF          test edi,edi
0040488D|.74 6B         je XACpass_u.004048FA
0040488F|.8B46 FC       mov eax,dword ptr ds:

调试的时候让关键挑的JE 跳转--(改Z标志位)   跳出关键CALL 来到

004D3BF5|.A1 E4B14D00   mov eax,dword ptr ds:
004D3BFA|.E8 D5E2FFFF   call ACpass_u.004D1ED4
004D3BFF|.8B55 E8       mov edx,
004D3C02|.58            pop eax
004D3C03|.E8 700CF3FF   call ACpass_u.00404878       -----关键CALL
004D3C08|.75 07         jnz XACpass_u.004D3C11       -----回到此处-- 发现此处不跳转 继续向下
004D3C0A|.C605 E0B14D00>mov byte ptr ds:,0x1
004D3C11|>8BC6          mov eax,esi
004D3C13|.E8 D8FAF2FF   call ACpass_u.004036F0
004D3C18|.803D E0B14D00>cmp byte ptr ds:,0x0
004D3C1F|.75 27         jnz XACpass_u.004D3C48-----到此处发现跳转-跳过了“未购买”用户
004D3C21|.8D55 E4       lea edx,
004D3C24|.8BB3 18030000 mov esi,dword ptr ds:
004D3C2A|.8BC6          mov eax,esi
004D3C2C|.E8 8714FCFF   call ACpass_u.004950B8
004D3C31|.8D45 E4       lea eax,
004D3C34|.BA 8C3D4D00   mov edx,ACpass_u.004D3D8C                ;   - 未购买用户
004D3C39|.E8 FE0AF3FF   call ACpass_u.0040473C
004D3C3E|.8B55 E4       mov edx,
004D3C41|.8BC6          mov eax,esi
F9运行看是否解除了未注册的限制-----运行起来后查看数据库密码---可以查看正确密码
到此爆破成功。
################################################################################################
############后续:#####------追正确注册码-------

记得刚才跟入关键CALL之后--比较了真假注册码---因此可以在比较处进行下断--从寄存器EDX中获取真注册码


###############################################################################################
1.---查找字符串---reguser regno 及software\acpass 破解方法
直接查找regno 来到:
004D3BAB|.E8 1C46F9FF   call ACpass_u.004681CC
004D3BB0|.B1 01         mov cl,0x1
004D3BB2|.BA 403D4D00   mov edx,ACpass_u.004D3D40                ;Software\ACPass
004D3BB7|.8BC6          mov eax,esi
004D3BB9|.E8 7246F9FF   call ACpass_u.00468230
004D3BBE|.8D4D F0       lea ecx,
004D3BC1|.BA 583D4D00   mov edx,ACpass_u.004D3D58                ;RegUser
004D3BC6|.8BC6          mov eax,esi
004D3BC8|.E8 4B48F9FF   call ACpass_u.00468418
004D3BCD|.8B55 F0       mov edx,
004D3BD0|.B8 E4B14D00   mov eax,ACpass_u.004DB1E4
004D3BD5|.E8 F608F3FF   call ACpass_u.004044D0
004D3BDA|.8D4D EC       lea ecx,
004D3BDD|.BA 683D4D00   mov edx,ACpass_u.004D3D68                ;RegNo
004D3BE2|.8BC6          mov eax,esi
004D3BE4|.E8 2F48F9FF   call ACpass_u.00468418
004D3BE9|.8B45 EC       mov eax,
004D3BEC|.50            push eax
004D3BED|.8D4D E8       lea ecx,
004D3BF0|.BA 783D4D00   mov edx,ACpass_u.004D3D78                ;acpassChina
004D3BF5|.A1 E4B14D00   mov eax,dword ptr ds:
004D3BFA|.E8 D5E2FFFF   call ACpass_u.004D1ED4
004D3BFF|.8B55 E8       mov edx,
看到这里相信大家都知道该怎么操作了吧--
跟上面注册表的一样--只是这种方法更快的找到了重启验证的位置
废话不再多说了    大家慢慢研究吧

################################################################################################
跟随的时候多次分析一下多跑两遍程序---就可以搞定了
################################################################################################

出现问题----OD调试器里面运行的时候(让关键跳转---可以正常使用)可是改为JMP之后保存运行就出现了问题
下面使用其他方法进行爆破--
004D3BED|.8D4D E8       lea ecx,
004D3BF0|.BA 783D4D00   mov edx,ACpass_u.004D3D78                ;acpassChina
004D3BF5|.A1 E4B14D00   mov eax,dword ptr ds:
004D3BFA|.E8 D5E2FFFF   call ACpass_u.004D1ED4
004D3BFF|.8B55 E8       mov edx,
004D3C02|.58            pop eax
004D3C03|.E8 700CF3FF   call ACpass_u.00404878   -------关键CALL--比较真假注册码
004D3C08|.75 07         jnz XACpass_u.004D3C11                         //爆破改为JE
004D3C0A|.C605 E0B14D00>mov byte ptr ds:,0x1
004D3C11|>8BC6          mov eax,esi
004D3C13|.E8 D8FAF2FF   call ACpass_u.004036F0
004D3C18|.803D E0B14D00>cmp byte ptr ds:,0x0
004D3C1F|.75 27         jnz XACpass_u.004D3C48   ////爆破改为JE
004D3C21|.8D55 E4       lea edx,
004D3C24|.8BB3 18030000 mov esi,dword ptr ds:
004D3C2A|.8BC6          mov eax,esi
004D3C2C|.E8 8714FCFF   call ACpass_u.004950B8
004D3C31|.8D45 E4       lea eax,
004D3C34|.BA 8C3D4D00   mov edx,ACpass_u.004D3D8C                ;   - 未购买用户
004D3C39|.E8 FE0AF3FF   call ACpass_u.0040473C

运行--窗口标题出现未购买用户(需要去除为购买标志,这里就不跟进了呵呵)但是实际上可以查看数据库的密码了

最后提醒:此文只是对ACCESS密码工具进行了一个小的分析,希望读者不要用于非法用途


4、申请时间:15年6月7日
5、备注:老用基友的号好麻烦啊,过来试试能不能申个码。希望斑猪给个,谢谢了!

Hmily 发表于 2015-6-8 18:35

爆破过程太简单了,分析下算法吧。
页: [1]
查看完整版本: 申 请 I D : mic102