金盘电子阅览室管理系统Word文档下载推荐.docx

上传人:b****1 文档编号:1179999 上传时间:2023-04-30 格式:DOCX 页数:20 大小:26.42KB
下载 相关 举报
金盘电子阅览室管理系统Word文档下载推荐.docx_第1页
第1页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第2页
第2页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第3页
第3页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第4页
第4页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第5页
第5页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第6页
第6页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第7页
第7页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第8页
第8页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第9页
第9页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第10页
第10页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第11页
第11页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第12页
第12页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第13页
第13页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第14页
第14页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第15页
第15页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第16页
第16页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第17页
第17页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第18页
第18页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第19页
第19页 / 共20页
金盘电子阅览室管理系统Word文档下载推荐.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

金盘电子阅览室管理系统Word文档下载推荐.docx

《金盘电子阅览室管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《金盘电子阅览室管理系统Word文档下载推荐.docx(20页珍藏版)》请在冰点文库上搜索。

金盘电子阅览室管理系统Word文档下载推荐.docx

ESP定律的原理就是“堆栈平衡”原理[2]。

我们可以把壳假设为一个子程序,当壳把代码解压前和解压后,他必须要做的是遵循堆栈平衡的原理,让ESP执行到OEP的时候,使ESP=0012FFC4。

它可以使用在大部分的压缩壳,部分加密壳。

只要是在JMP到OEP后,ESP=0012FFC4的壳,理论上我们都可以使用。

是不是只能下断12FFA4的访问断点?

那只是ESP定律的一个体现,我们运用的是ESP定律的原理,而不应该是他的具体数值,不能说12FFA4,或者12FFC0就是ESP定律,他们只是ESP定律的一个应用罢了。

四、脱壳

既然知道软件加的壳是ASPack2.11压缩壳,那么我们就可以用ESP定律[3]来快速的脱掉这个壳了。

首先,用OD来加载主程序Gders.exe,加载好后我们选按F8运行一步,看到ESP的值是0012FFA4(图3.2)

 图3.2 ESP的值

我们在命令行里打入DD0012FFA4,我们在数据窗口在地址0012ffa4上右键菜单上选择断点,选择设置硬件断点访问,再选择Word来设置硬件一个断点。

(如图3.3)

图3.3 设置硬件断点

我们按F9运行程序。

然后调试器会将程序自动停下到我们设置的硬件断点地址006803AB(如图3.4)

图3.4 硬件断点位置

按着我们按几下F8,让调试器运行程序到Retn后返回程序的领空,(如图3.5)

图3.5 返回程序领空

地址0058F36C就是该程序的真正入口点了,我们使用OD的OllyDump来把程序Dump出来。

在0058F36C使用右键菜单我们选择OllyDump脱壳调试进程。

把入口点修正改为18F36C,(如图3.6)

图3.6 修正程序OPE

然后点脱壳按钮,选择一个文件名,我填的是UnPack。

让软件自动保存后,Unpack.exe就是Gders.exe脱壳后的文件了。

我们再用PEID检查一下是不是已经脱壳了(如图3.7)所示。

图3.7 PEID查壳

PEid显示该程序是由BorlandDelphi6.0-7.0编写的,这说明我们已经把程序的外壳给去掉了。

第二节 找出注册码的算法

一、API

因为在破解软件的过程用,经常要使用到API的调用,所以我们必须要了解到API是什么。

Win32程序是构筑在Win32API基础上的[4]。

在Win32API中,包括了大量的的函数、结构和消息等,它不公为应用程序所调用,也是Windows自身的一部分,Windows自身的运行也调用这些API函数。

二、寻找算法的详细过程

脱完壳后,我们首先要找找看该软件有什么好的提示我们怎么破解该程序的提示。

我们运行程序来到执行它的注册码模块(如图3.8):

图3.8 程序的注册框

我们也不是知道产品序列号是多少,我们先随便填一个注册码。

我们填一个123456789看看软件有什么提示。

点注册后,系统提示我们要重启起程序检查是否注册成功(如图3.9):

图3.9 注册后的提示

既然有提示窗口出现,我们首先可以试试API函数MessageBox下断点[5],看能不能让程序断下来。

用OD加载脱壳程序Unpack.exe,在OD的命令行窗口输入bpMessageBoxA,然后按F9,OD运行程序,在产品序号输入123456789,点注册按钮。

OK程序在MessageBox函数上断下来了,我们看到堆栈窗口,上面显示,MessageBoxA来自Unpack.00580617,这说明该程序在00580617地址调用了MessageBoxA函数。

(如图3.10)

图3.10 程序调用MeesagBoxA

按Ctrl+G,我们在OD的输入需要的跟随表达语句窗口输入地址00580617(如图3.11)。

图3.11 OD的输入需要的跟随表达语句窗口

调式器就返回到程序的领空了。

(如图3.12)

图3.12 返回程序领空

MessageBoxA是已经执行完成的语句提示,所以我们得看向上看代码,看有什么可以利用的信息。

以下是金盘电子阅览室管理系统注册按钮代码:

***************************************************************************

00580490 

 

 

55 

pushebp

00580491 

8BEC 

movebp,esp

00580493 

33C9 

xorecx,ecx

00580495 

51 

pushecx

00580496 

00580497 

00580498 

00580499 

0058049A 

53 

pushebx

0058049B 

56 

pushesi

0058049C 

57 

pushedi

0058049D 

8945FC 

movdwordptrss:

[ebp-4],eax

005804A0 

33C0 

xoreax,eax

005804A2 

005804A3 

6843065800 

pushUnpack.00580643

005804A8 

64:

FF30 

pushdwordptrfs:

[eax]

005804AB 

8920 

movdwordptrfs:

[eax],esp

005804AE 

005804B0 

005804B1 

68DF045800 

pushUnpack.005804DF

005804B6 

005804B9 

005804BC 

8D55F8 

leaedx,dwordptrss:

[ebp-8]

005804BF 

8B45FC 

moveax,dwordptrss:

[ebp-4]

005804C2 

8B8010030000 

moveax,dwordptrds:

[eax+310]

005804C8 

E8FB28EDFF 

callUnpack.00452DC8

005804CD 

8B45F8 

005804D0 

E81793E8FF 

callUnpack.004097EC

005804D5 

005804D7 

5A 

popedx

005804D8 

59 

popecx

005804D9 

005804DA 

8910 

[eax],edx

005804DD 

EB1B 

jmpshortUnpack.005804FA

005804DF 

.^E9E43BE8FF 

jmpUnpack.004040C8

005804E4 

005804E7 

005804ED 

8B10 

movedx,dwordptrds:

005804EF 

FF92C0000000 

calldwordptrds:

[edx+C0]

005804F5 

E8FA3FE8FF 

callUnpack.004044F4

005804FA 

>

8D55F4 

[ebp-C]

005804FD 

00580500 

00580506 

E8BD28EDFF 

0058050B 

8B45F4 

0058050E 

E8D992E8FF 

00580513 

3DFFFF0000 

cmpeax,0FFFF

00580518 

7E30 

jleshortUnpack.0058054A

0058051A 

6A10 

push10

0058051C 

6854065800 

pushUnpack.00580654

00580521 

685C065800 

pushUnpack.0058065C

00580526 

00580529 

E8CA91EDFF 

callUnpack.004596F8

0058052E 

50 

pusheax 

;

|hOwner

0058052F 

E85078E8FF 

call<

jmp.&

user32.MessageBoxA>

;

\MessageBoxA

00580534 

00580537 

0058053D 

0058053F 

00580545 

E9DE000000 

jmpUnpack.00580628

0058054A 

8D55F0 

[ebp-10]

0058054D 

00580550 

00580556 

E86D28EDFF 

0058055B 

8B45F0 

0058055E 

E88992E8FF 

00580563 

8B15F8365900 

[5936F8] 

Unpack.005954FC

00580569 

8902 

movdwordptrds:

[edx],eax

0058056B 

8D55EC 

[ebp-14]

0058056E 

00580571 

8B80FC020000 

[eax+2FC]

00580577 

E84C28EDFF 

0058057C 

8B55EC 

movedx,dwordptrss:

0058057F 

A19C3A5900 

moveax,dwordptrds:

[593A9C]

00580584 

E88345E8FF 

callUnpack.00404B0C

00580589 

A1D03E5900 

[593ED0]

0058058E 

8B00 

00580590 

00580592 

BA80065800 

movedx,Unpack.00580680 

// 

ASCII"

\SOFTWARE\GoldSoft\Server"

00580597 

E80C4FEFFF 

callUnpack.004754A8

0058059C 

84C0 

testal,al

0058059E 

7456 

jeshortUnpack.005805F6

005805A0 

005805A3 

8B8018030000 

[eax+318]

005805A9 

005805AB 

FF92C8000000 

[edx+C8]

005805B1 

8BC8 

movecx,eax

005805B3 

005805B8 

005805BA 

BAA4065800 

movedx,Unpack.005806A4 

VersionFlag"

005805BF 

E87051EFFF 

callUnpack.00475734

005805C4 

8B0DF8365900 

movecx,dwordptrds:

005805CA 

8B09 

[ecx]

005805CC 

005805D1 

005805D3 

BAB8065800 

movedx,Unpack.005806B8 

MaxUsers"

005805D8 

E85751EFFF 

005805DD 

8B0D9C3A5900 

[593A9C] 

Unpack.005954F8

005805E3 

005805E5 

005805EA 

005805EC 

BACC065800 

movedx,Unpack.005806CC 

YourSerial"

005805F1 

E86E50EFFF 

callUnpack.00475664

005805F6 

005805FB 

005805FD 

E8124EEFFF 

callUnpack.00475414

00580602 

6A40 

push40

00580604 

68D8065800 

pushUnpack.005806D8

00580609 

68E0065800 

pushUnpack.005806E0

0058060E 

00580611 

E8E290EDFF 

00580616 

//|hOwner

00580617 

E86877E8FF 

//\MessageBoxA

*************************************************************************

一般软件注册后要重启验证,注册码一般保存在注册表,或一个专门的文件里,以上代码已经提示我们,这个软件的注册码是保存在注册表的。

为什么呢,很简单,我们先看到代码的这个地方:

00580592 BA80065800movedx,Unpack.00580680//ASCII"

上面的注释很清楚的说明,注册码存放在\SOFTWARE\GoldSoft\Server里。

再看这段代码005805D3.BAB8065800 movedx,Unpack.005806B8//ASCII"

这段是存放最大用户数有多少。

然后再看这段代码005805ECBACC065800movedx,Unpack.005806CC//ASCII"

而这段存放注册码。

我们打开一下注册码表来验证一下我们判断是不是正确的,打开注册表找到\SOFTWARE\GoldSoft\Server,里看到YourSerial的值就是123456789。

(如图3.13)

图3.13 注册表存放注册码的位置

既然他重启要验证注册码,那启动程序肯定要调用YourSerial字符串值。

所以我们用OD的Ultar字符串参考插件,来查找YourSerial字符串,看能不能找出有用的相关信息。

在OD的插件菜单里我们选择Ultar字符串参考的查找ASCII,然后按Ctrl+F键,输入YourSerial。

我们一共找出005805EC、005860B7、00586125、0058642E、0058645C五个地址,我们在这个5个地址全部按F2下断点。

看程序在验证注册码时调用的是地址。

因为程序要重启验证,我们下完断点后,给OD重新加载程序运行。

调试器会在0058642E BADC9D5800 movedx,Unpack.00589DDC //ASCII"

停下,我们在信息窗口上面看到:

00589DDC=Unpack.00589DDC(ASCII"

edx=00B92538,(ASC

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2