飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 11631|回复: 12

[原创] 2006年最后一天之OFFICE文档解密专家爆破

[复制链接]

该用户从未签到

发表于 2006-12-31 23:03:10 | 显示全部楼层 |阅读模式
猫老大:找你一天了,不知道你什么时候在,兄弟想加入学习小组,好好学习,不知道什么时候能给个机会啊?知道现在学习小组已经停止招收学员了,但是还请猫老大~~~~~~~~~~~~~~~~~~


【文章标题】: 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

评分

参与人数 1威望 +20 收起 理由
tigerisme + 20 鼓励,不错的分析!

查看全部评分

PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2006-12-31 23:29:21 | 显示全部楼层

继续分析之

程序目录内有一个elcom_reg.dll文件,Resource hacker分析,注册码填写框位于该DLL文件中。
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2007-1-1 00:07:35 | 显示全部楼层

2007年了,

先向大家问候一下!!!!
祝大家新年快乐1!!!!!
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2007-1-1 10:22:08 | 显示全部楼层
继续补充,程序注册时调用elcom_reg.dll文件进行注册,也就是注册码验证和计算部份在这里
PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    前天 21:02
  • 签到天数: 263 天

    [LV.8]以坛为家I

    发表于 2007-1-1 11:11:59 | 显示全部楼层
    你没试下标志位吗?
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2007-1-1 12:51:24 | 显示全部楼层
    试过的,和我那样爆破没有什么区别
    PYG19周年生日快乐!
  • TA的每日心情

    2023-2-3 09:50
  • 签到天数: 157 天

    [LV.7]常住居民III

    发表于 2007-1-2 13:50:46 | 显示全部楼层
    看看在说了啊,支持哈
    PYG19周年生日快乐!
  • TA的每日心情

    2016-6-2 20:34
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2007-1-5 11:16:32 | 显示全部楼层
    我也玩了下3.11版...修改了两处变为专业版...那个按钮也不会搞,资源修改把那个按钮隐藏掉了;P
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-1-18 07:45:55 | 显示全部楼层
    好文章哦  呵呵
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-2-1 13:17:32 | 显示全部楼层
    学习!!!!!!!!!!!!!!!!!!!!!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表