一款access密码破解器的破解分析
本帖最后由 ITaman 于 2012-7-8 12:48 编辑【文章标题】: 一款access密码破解器的破解分析
【文章作者】: ITaman
【作者邮箱】: itaman@126.com
【软件名称】: Access数据库密码破解器
【软件大小】: 1.5M
【加壳方式】: ASPack 2.12 -> Alexey Solodovnikov
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: PEID V0.95,OD,LordPE ,ImportREC
【操作平台】: windowXP
【软件介绍】: Access数据库密码破解器可以破解目前已知的各版本Access数据库密码,支持20位中英文密码的破解
(试用版只能显示前4位密码),支持批量数据库破解。
【作者声明】: 本人菜鸟一只,最近参加北理工举办ISCC2012信息安全大赛,有个题需要破解个Access数据库密码,
在网上搜索到此软件。初学破解一个月,纯交流,没有其他目的,支持正版。希望各位大侠多多指教~
***********************************************************************************************************************
【详细过程】
1.查壳
PEID查壳ASPack 2.12 -> Alexey Solodovnikov
2.脱壳
OD载入
0056D001 >60 pushad //眼前一亮,考虑ESP定律
0056D002 E8 03000000 call ACpass.0056D00A
0056D007- E9 EB045D45 jmp 45B3D4F7
0056D00C 55 push ebp
0056D00D C3 retn
单步F8,注意到寄存器ESP 为0012FFA4右键数据窗口中跟随
来到数据窗口
0012FFA47C930738ntdll.7C930738下硬件访问断点
F9运行
0056D3B0 /75 08 jnz XACpass.0056D3BA
0056D3B2 |B8 01000000 mov eax,0x1
0056D3B7 |C2 0C00 retn 0xC
0056D3BA \68 FC524D00 push ACpass.004D52FC//OEP到了^_^
0056D3BF C3 retn
删除硬件断点,单步F8,来到OEP
004D52FC 55 push ebp
004D52FD 8BEC mov ebp,esp
004D52FF 83C4 F0 add esp,-0x10
004D5302 53 push ebx
004D5303 B8 844F4D00 mov eax,ACpass.004D4F84
004D5308 E8 CB15F3FF call ACpass.004068D8
004D530D 8B1D E4914D00 mov ebx,dword ptr ds: ; ACpass.004DAC34
004D5313 8B03 mov eax,dword ptr ds:
使用LordPE 先纠正映象大小,然后完整脱壳
使用ImportREC修复,输入表都找到了,嘻嘻!抓取,运行成功。^_^
3.破解
接下来开始破解
点击软件注册:输入用户名ITaman,注册码1234567,点注册验证,提示重启程序
典型的重启验证,先到注册表里找找有没有啥猫腻
运行 regedit打开注册表,查找ITaman
果然不出所料 里面写有
RegNo:1234567
RegUser:ITaman
OD载入脱壳后的程序
搜索ASCII码 搜索关键字RegUser
找到后双击来到这里
004D3B8F|> \C605 E0B14D00>mov byte ptr ds:,0x0 //下断点,F9运行
004D3B96|.B2 01 mov dl,0x1 //F8单步走,注意数据窗口和堆栈的变化
004D3B98|.A1 2C804600 mov eax,dword ptr ds:
004D3B9D|.E8 8A45F9FF call dumped_.0046812C
004D3BA2|.8BF0 mov esi,eax
004D3BA4|.BA 01000080 mov edx,0x80000001
004D3BA9|.8BC6 mov eax,esi
004D3BAB|.E8 1C46F9FF call dumped_.004681CC
004D3BB0|.B1 01 mov cl,0x1
004D3BB2|.BA 403D4D00 mov edx,dumped_.004D3D40 ;Software\ACPass
004D3BB7|.8BC6 mov eax,esi
004D3BB9|.E8 7246F9FF call dumped_.00468230
004D3BBE|.8D4D F0 lea ecx,
004D3BC1|.BA 583D4D00 mov edx,dumped_.004D3D58 ;RegUser
004D3BC6|.8BC6 mov eax,esi
004D3BC8|.E8 4B48F9FF call dumped_.00468418
004D3BCD|.8B55 F0 mov edx,
004D3BD0|.B8 E4B14D00 mov eax,dumped_.004DB1E4
004D3BD5|.E8 F608F3FF call dumped_.004044D0
004D3BDA|.8D4D EC lea ecx,
004D3BDD|.BA 683D4D00 mov edx,dumped_.004D3D68 ;RegNo
004D3BE2|.8BC6 mov eax,esi
004D3BE4|.E8 2F48F9FF call dumped_.00468418
004D3BE9|.8B45 EC mov eax,
004D3BEC|.50 push eax
004D3BED|.8D4D E8 lea ecx,
004D3BF0|.BA 783D4D00 mov edx,dumped_.004D3D78 ;acpassChina
004D3BF5|.A1 E4B14D00 mov eax,dword ptr ds:
004D3BFA|.E8 D5E2FFFF call dumped_.004D1ED4 //关键CALL,F7
004D3BFF|.8B55 E8 mov edx, //单步到此处出现了数据窗口如下注册码
004D3C02|.58 pop eax
004D3C03|.E8 700CF3FF call dumped_.00404878
004D3C08|.75 07 jnz Xdumped_.004D3C11
004D3C0A|.C605 E0B14D00>mov byte ptr ds:,0x1
***********************************************************************************************************************
堆栈 ss:=00F323B0, (ASCII "DCEFA8866F724BF5")
edx=00F36164, (ASCII "ITaman")
***********************************************************************************************************************
使用RegNo:DCEFA8866F724BF5
RegUser:ITaman
注册成功!^_^
PS:本来想研究下注册码算法,搞个注册机,无耐功底不够,希望哪位大侠能给出算法,小弟十分感谢~^_^上面分
析有错误的地方,请各位大侠不要见笑。
今天刚刚注册的号,感谢吾爱破解开放注册一天,已经期待了很久了~~
唔 不错 学习了 膜拜大牛 搞不懂说什么 写的不错。鼓励大家出破文。
破文尽量详细。 这是什么啊 支持破解 谢谢大家支持~:loveliness: 恭喜楼主! 这到是好啊,可惜暂用不着