- UID
- 26372
注册时间2006-12-3
阅读权限30
最后登录1970-1-1
龙战于野
该用户从未签到
|
猫老大:找你一天了,不知道你什么时候在,兄弟想加入学习小组,好好学习,不知道什么时候能给个机会啊?知道现在学习小组已经停止招收学员了,但是还请猫老大~~~~~~~~~~~~~~~~~~
【文章标题】: 2006年最后一天之OFFICE文档解密专家爆破
【文章作者】: 神猪
【作者QQ号】: 80930686
【软件名称】: Advanced Office Password RecoveryV3.10
【下载地址】: 自己搜索下载
【保护方式】: ASProtect壳
【编写语言】: Borland C++ 1999
【使用工具】: PEID ,OD
【操作平台】: XP
【软件介绍】: 针对 MS Office 系列的密码破解工具 AOPR 可破解 95~03 版的各类 Office 文档,
本软件分精简、标准、专业三个版本,而本专业版便是其中支持的格式最全、开放的特性最多的一款。
主要格式如下:
Microsoft Word 文档
Microsoft Excel 文档
Microsoft Access 数据库
Microsoft Outlook 个人存储文件
Microsoft Outlook VBA 宏文件
Microsoft Money 数据库
Microsoft Schedule+ 文件
Microsoft Backup 文件
Microsoft Mail 文件
Visio 文件
Microsoft PowerPoint 演示
Microsoft Project 文件
Microsoft Pocket Excel 文件
Microsoft OneNote 文件
【作者声明】: 今天是2006年最后一天,总得为PYG交点作业,虽然偶水平有限!!这个软件网上已经有破解
版,但是偶没看到破文,正好闲来无事,就拿它分析一下吧。--------------------------------------------------------------------------------
【详细过程】
PEID查壳为 ASProtect 1.33 - 2.1 Registered -> Alexey Solodovnikov * ,对偶个菜鸟来说算是强壳了。为了节省时间
怕交不了作业,嘿嘿~~~~~,所以,脱壳机脱之~~~,我用的是stripper_v211rc2,还好,脱了之后,不用
修复,也可以使用 !~~~!
此软件最早应该是英文版,后来哪位大哥给汉化的吧?因为我下载的是汉化版。所以W32ADSW找不到有用的提示!
没办法,取出法宝OD~~~,载入!!!
软件有注册错误提示,下断点BPX MessageboxA
程序断下来,看下面
004168C8 /$ 55 PUSH EBP
004168C9 |. 8BEC MOV EBP,ESP
004168CB |. 81C4 00FEFFFF ADD ESP,-200
004168D1 |. 53 PUSH EBX
004168D2 |. 8B5D 08 MOV EBX,DWORD PTR SS:[EBP+8]
004168D5 |. 53 PUSH EBX ; /Arg1
004168D6 |. E8 39650300 CALL _aopr.0044CE14 ; \此处应该为关键CALL F7跟近
004168DB |. 59 POP ECX
004168DC 85C0 TEST EAX,EAX
004168DE 74 68 JE SHORT _aopr.00416948 ; 此处关键跳转,跳则注册错误!
004168E0 53 PUSH EBX
004168E1 |. E8 9EFFFFFF CALL _aopr.00416884 ; \_aopr.00416884
004168E6 |. 59 POP ECX
004168E7 |. 68 B1605B00 PUSH _aopr.005B60B1 ; AOPR
004168EC |. 833D 20755B00>CMP DWORD PTR DS:[5B7520],0
004168F3 |. 74 07 JE SHORT _aopr.004168FC
004168F5 |. A1 20755B00 MOV EAX,DWORD PTR DS:[5B7520]
004168FA |. EB 05 JMP SHORT _aopr.00416901
004168FC |> B8 B6605B00 MOV EAX,_aopr.005B60B6
00416901 |> 50 PUSH EAX ; |<%s>
00416902 |. 68 A9605B00 PUSH _aopr.005B60A9 ; |%s %s !
00416907 |. 8D95 00FEFFFF LEA EDX,DWORD PTR SS:[EBP-200] ; |
0041690D |. 52 PUSH EDX ; |s
0041690E |. E8 6F4A1900 CALL <JMP.&user32.wsprintfA> ; \wsprintfA
00416913 |. 83C4 10 ADD ESP,10
00416916 |. 833D 18755B00>CMP DWORD PTR DS:[5B7518],0
0041691D |. 6A 40 PUSH 40
0041691F |. 74 08 JE SHORT _aopr.00416929
00416921 |. 8B0D 18755B00 MOV ECX,DWORD PTR DS:[5B7518]
00416927 |. EB 05 JMP SHORT _aopr.0041692E
00416929 |> B9 B7605B00 MOV ECX,_aopr.005B60B7
0041692E |> 51 PUSH ECX ; |Title
0041692F |. 8D85 00FEFFFF LEA EAX,DWORD PTR SS:[EBP-200] ; |
00416935 |. 50 PUSH EAX ; |Text
00416936 |. E8 BD461900 CALL <JMP.&user32.GetFocus> ; |[GetFocus
0041693B |. 50 PUSH EAX ; |hOwner
0041693C |. E8 91481900 CALL <JMP.&user32.MessageBoxA> ; \注册成功提示框
00416941 |. B8 01000000 MOV EAX,1
00416946 |. EB 3C JMP SHORT _aopr.00416984
00416948 |> 6A 30 PUSH 30
0041694A |. 833D 18755B00>CMP DWORD PTR DS:[5B7518],0
00416951 |. 74 08 JE SHORT _aopr.0041695B
00416953 |. 8B15 18755B00 MOV EDX,DWORD PTR DS:[5B7518]
00416959 |. EB 05 JMP SHORT _aopr.00416960
0041695B |> BA B9605B00 MOV EDX,_aopr.005B60B9
00416960 |> 52 PUSH EDX
00416961 |. 833D 24755B00>CMP DWORD PTR DS:[5B7524],0
00416968 |. 74 07 JE SHORT _aopr.00416971
0041696A |. A1 24755B00 MOV EAX,DWORD PTR DS:[5B7524]
0041696F |. EB 05 JMP SHORT _aopr.00416976
00416971 |> B8 B8605B00 MOV EAX,_aopr.005B60B8
00416976 |> 50 PUSH EAX ; |Text
00416977 |. E8 7C461900 CALL <JMP.&user32.GetFocus> ; |[GetFocus
0041697C |. 50 PUSH EAX ; |hOwner
0041697D |. E8 50481900 CALL <JMP.&user32.MessageBoxA> ; \注册失败提示框
00416982 |. 33C0 XOR EAX,EAX
00416984 |> 5B POP EBX
00416985 |. 8BE5 MOV ESP,EBP
00416987 |. 5D POP EBP
00416988 \. C3 RETN
这里我将 004168DE 74 68 JE SHORT _aopr.00416948 ; 此处关键跳转,跳则注册错误!
中的JE一行NOP掉了。
OD中保存,运行程序,点注册,随便输入注册码,点注册按钮,提示注册成功~~,嘿嘿~~~,
再次运行程序,晕,还是可以注册,不过经过测试,暂时没有发现这样爆破后,有限制的地方。
这个程序注册之后,界面上少一个获取完全版的按钮。未注册则显示。
接着往下分析,重新起动之后,仍然显示那个按钮,有两种可能,一种是软件把注册码写入到文件中,一种是软件把注册码写入注册表!
用注册表监视工具监视软件运行,发现软件将注册码存放在这个位置。
[HKEY_CURRENT_USER\Software\ElcomSoft\Advanced Office Password Recovery\Registration]
"Code"="2323V-66344" 这个就是我注册时写的注册码
重新运行软件,下断点BPX RegQueryValueExA
下断,程序会断下来很多次。因为偶是菜鸟,对于程序分析一直是不过关,所以只能理解一部份。
分析结果:软件会验证注册码,注册码开头部份必须以AOPRH- 开头,举个例子,实际的注册码可以是这样的
AOXPPH-PRO-LWXFW-46678-FTDBV-66344
现在是十一点,因为时间关系,先把这个贴子贴上来,我将继续分析这程序,如果将详细算法分析出来,会回来补充的。
如果哪位老大有空,一起来分析一下,给小弟指点一下了~~~~~~~
下面这部份就是读取验证注册表中的注册码的。
004167D0 |. E8 8D3D1900 CALL <JMP.&advapi32.RegQueryValueExA> ; \RegQueryValueExA
004167D5 |. 85C0 TEST EAX,EAX
004167D7 |. 75 28 JNZ SHORT _aopr.00416801
004167D9 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
004167DC |. 8D4D F8 LEA ECX,DWORD PTR SS:[EBP-8]
004167DF |. 52 PUSH EDX ; /pBufSize
004167E0 |. 53 PUSH EBX ; |Buffer
004167E1 |. 51 PUSH ECX ; |pValueType
004167E2 |. 6A 00 PUSH 0 ; |Reserved = NULL
004167E4 |. 68 11605B00 PUSH _aopr.005B6011 ; |Code
004167E9 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; |
004167EC |. 50 PUSH EAX ; |hKey
004167ED |. E8 703D1900 CALL <JMP.&advapi32.RegQueryValueExA> ; \RegQueryValueExA
004167F2 |. 85C0 TEST EAX,EAX
004167F4 |. 75 0B JNZ SHORT _aopr.00416801
004167F6 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
004167F9 |. 52 PUSH EDX ; /hKey
004167FA |. E8 153D1900 CALL <JMP.&advapi32.RegCloseKey> ; \RegCloseKey
004167FF |. EB 7B JMP SHORT _aopr.0041687C
00416801 |> 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
00416804 |. 51 PUSH ECX ; /hKey
00416805 |. E8 0A3D1900 CALL <JMP.&advapi32.RegCloseKey> ; \RegCloseKey
0041680A |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
0041680D |. 50 PUSH EAX ; /pHandle
0041680E |. 68 16605B00 PUSH _aopr.005B6016 ; |SOFTWARE\ElcomSoft\Advanced Office Password Recovery\Registration
00416813 |. 68 02000080 PUSH 80000002 ; |hKey = HKEY_LOCAL_MACHINE
00416818 |. E8 FD3C1900 CALL <JMP.&advapi32.RegCreateKeyA> ; \RegCreateKeyA
0041681D |. 837D FC 00 CMP DWORD PTR SS:[EBP-4],0
00416821 |. 74 4D JE SHORT _aopr.00416870
00416823 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
00416826 |. 8D4D F8 LEA ECX,DWORD PTR SS:[EBP-8]
00416829 |. 52 PUSH EDX ; /pBufSize
0041682A |. 6A 00 PUSH 0 ; |Buffer = NULL
0041682C |. 51 PUSH ECX ; |pValueType
0041682D |. 6A 00 PUSH 0 ; |Reserved = NULL
0041682F |. 68 58605B00 PUSH _aopr.005B6058 ; |Code
00416834 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; |
00416837 |. 50 PUSH EAX ; |hKey
00416838 |. E8 253D1900 CALL <JMP.&advapi32.RegQueryValueExA> ; \RegQueryValueExA
0041683D |. 85C0 TEST EAX,EAX
0041683F |. 75 2F JNZ SHORT _aopr.00416870
00416841 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
00416844 |. 8D4D F8 LEA ECX,DWORD PTR SS:[EBP-8]
00416847 |. 52 PUSH EDX ; /pBufSize
00416848 |. 53 PUSH EBX ; |Buffer
00416849 |. 51 PUSH ECX ; |pValueType
0041684A |. 6A 00 PUSH 0 ; |Reserved = NULL
0041684C |. 68 5D605B00 PUSH _aopr.005B605D ; |Code
00416851 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; |
00416854 |. 50 PUSH EAX ; |hKey
00416855 |. E8 083D1900 CALL <JMP.&advapi32.RegQueryValueExA> ; \RegQueryValueExA
0041685A |. 85C0 TEST EAX,EAX
0041685C |. 75 12 JNZ SHORT _aopr.00416870
0041685E |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
00416861 |. 52 PUSH EDX ; /hKey
00416862 |. E8 AD3C1900 CALL <JMP.&advapi32.RegCloseKey> ; \RegCloseKey
00416867 |. 53 PUSH EBX ; /Arg1
00416868 |. E8 17000000 CALL _aopr.00416884 ; \_aopr.00416884
0041686D |. 59 POP ECX
0041686E |. EB 0C JMP SHORT _aopr.0041687C
00416870 |> 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
00416873 |. 51 PUSH ECX ; /hKey
00416874 |. E8 9B3C1900 CALL <JMP.&advapi32.RegCloseKey> ; \RegCloseKey
00416879 |. C603 00 MOV BYTE PTR DS:[EBX],0
0041687C |> 5B POP EBX
0041687D |. 8BE5 MOV ESP,EBP
0041687F |. 5D POP EBP
00416880 \. C3 RETN
00416881 90 NOP
00416882 90 NOP
00416883 90 NOP
00416884 /$ 55 PUSH EBP
00416885 |. 8BEC MOV EBP,ESP
00416887 |. 51 PUSH ECX
00416888 |. 53 PUSH EBX
00416889 |. 8B5D 08 MOV EBX,DWORD PTR SS:[EBP+8]
0041688C |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
0041688F |. 50 PUSH EAX ; /pHandle
00416890 |. 68 62605B00 PUSH _aopr.005B6062 ; |SOFTWARE\ElcomSoft\Advanced Office Password Recovery\Registration
00416895 |. 68 01000080 PUSH 80000001 ; |hKey = HKEY_CURRENT_USER
0041689A |. E8 7B3C1900 CALL <JMP.&advapi32.RegCreateKeyA> ; \RegCreateKeyA
0041689F |. 53 PUSH EBX ; /String
004168A0 |. E8 51411900 CALL <JMP.&kernel32.lstrlenA> ; \lstrlenA
004168A5 |. 50 PUSH EAX ; /BufSize
004168A6 |. 53 PUSH EBX ; |Buffer
004168A7 |. 6A 01 PUSH 1 ; |ValueType = REG_SZ
004168A9 |. 6A 00 PUSH 0 ; |Reserved = 0
004168AB |. 68 A4605B00 PUSH _aopr.005B60A4 ; |Code
004168B0 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] ; |
004168B3 |. 52 PUSH EDX ; |hKey
004168B4 |. E8 BB3C1900 CALL <JMP.&advapi32.RegSetValueExA> ; \RegSetValueExA
004168B9 |. 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
004168BC |. 51 PUSH ECX ; /hKey
004168BD |. E8 523C1900 CALL <JMP.&advapi32.RegCloseKey> ; \RegCloseKey
004168C2 |. 5B POP EBX
004168C3 |. 59 POP ECX
004168C4 |. 5D POP EBP
004168C5 \. C3 RETN
--------------------------------------------------------------------------------
【版权声明】: 偶的这篇文原创于PYG论坛, 网上到底有没有这个软件的破文,小弟不详,因没有查证!!!!
2006年12月31日 22:58:11 |
评分
-
查看全部评分
|