各种各样的程序外壳都是怎么做出来的

各种各样的程序外壳都是怎么做出来的,第1张

外壳?是说界面吗?

用VC做出来的,只不过要自己改很多东西(例如把默认的标题栏删了,然后自己重画比较好看的标题栏)

-----------------------------------------

我也不是很清楚的,只是以前看过别人的程序,等高手来详细回答吧

分类: 电脑/网络 >> 软件

解析:

Unix环境下在 *** 作系统之上提供的一套命令解释程序叫做外壳程序(shell)

外壳程序是 *** 作员与 *** 作系统交互的界面, *** 作系统再负责完成与机器硬件的交互。

所以 *** 作系统可成为机器硬件的外壳,shell命令解析程序可称为 *** 作系统的外壳。

你好知友!

所谓“外壳”就是给可执行的文件加上一个外壳。用户执行的实际上是这个外壳的程序,而这个外壳程序负责把用户原来的程序在内存中解开压缩,并把控制权交还给解开后的真正的程序,由于一切工作都是在内存中运行,用户根本不知道也不需要知道其运行过程,并且对执行速度没有什么影响。如果在外壳程序中加入对软件锁或钥匙盘的验证部分,它就是我们所说的外壳保护了。

外壳程序主要作用是对核心代码进行加密保护,以防其他人破解或窃取程序源代码。

更多参见》>

根据我多年的破解经验,我跟你说说吧。我玩一些游戏,例如单机的什么三国有些都要改主页才能改。我也试过脱壳,一般加上的都是ACP20的壳,这个你用peid095可以试下,脱也能脱,但是不完全,脱壳后用od反汇编照样出现乱码,要完全破解需要很长时间,而且工程很巨大。我还是建议你不要破解了,还是去下载游侠网这类大网站提供的游戏,哪个不会出现这类情况的。

壳的概念:

所谓“壳”就是专门压缩的工具。

这里的压缩并不是我们平时使用的RAR、ZIP这些工具的压缩,壳的压缩指的是针对exe、com、和dll等程序文件进行压缩,在程序中加入一段如同保护层的代码,使原程序文件代码失去本来面目,从而保护程序不被非法修改和反编译,这段如同保护层的代码,与自然界动植物的壳在功能上有很多相似的地方,所以我们就形象地称之为程序的壳。

壳的作用:

1保护程序不被非法修改和反编译。

2对程序专门进行压缩,以减小文件大小,方便传播和储存。

壳和压缩软件的压缩的区别是

压缩软件只能够压缩程序

而经过壳压缩后的exe、com和dll等程序文件可以跟正常的程序一样运行

下面来介绍一个检测壳的软件

PEID v092

这个软件可以检测出 450种壳

新版中增加病毒扫描功能,是目前各类查壳工具中,性能最强的。

另外还可识别出EXE文件是用什么语言编写的VC++、Delphi、VB或Delphi等。

支持文件夹批量扫描

我们用PEID对easymailexe进行扫描

找到壳的类型了

UPX 0896 - 102 / 105 - 124 -> Markus & Laszlo

说明是UPX的壳

下面进行

步骤2 脱壳

对一个加了壳的程序,去除其中无关的干扰信息和保护限制,把他的壳脱去,解除伪装,还原软件本来的面目。这个过程就叫做脱壳。

脱壳成功的标志

脱壳后的文件正常运行,功能没有损耗。

还有一般脱壳后的文件长度都会大于原文件的长度。

即使同一个文件,采用不同的脱壳软件进行脱壳,由于脱壳软件的机理不通,脱出来的文件大小也不尽相同。

关于脱壳有手动脱壳和自动脱壳

自动脱壳就是用专门的脱壳机脱 很简单 按几下就 OK了

手动脱壳相对自动脱壳 需要的技术含量微高 这里不多说了

UPX是一种很老而且强大的壳 不过它的脱壳机随处就能找到

UPX本身程序就可以通过

UPX 文件名 -d

来解压缩 不过这些需要的 命令符中输入

优点方便快捷 缺点DOS界面

为了让大家省去麻烦的 *** 作 就产生了一种叫 UPX SHELL的外壳软件

UPX SHELL v309

UPX 外壳程序!

目的让UPX的脱壳加壳傻瓜化

注:如果程序没有加壳 那么我们就可以省去第二步的脱壳了,直接对软件进行分析了。

脱完后 我们进行

步骤3

运行程序

尝试注册

获取注册相关信息

通过尝试注册 我们发现一个关键的字符串

“序列号输入错误”

步骤4

反汇编

反汇编一般用到的软件 都是 W32Dasm

W32dasm对于新手 易于上手 *** 作简单

W32Dasm有很多版本 这里我推荐使用 W32Dasm 无极版

我们现在反汇编WebEasyMail的程序文件easymailexe

然后看看能不能找到刚才的字符串

步骤5

通过eXeScope这个软件来查看未能在w32dasm中正确显示的字符串信息

eXeScope v650

更改字体,更改菜单,更改对话框的排列,重写可执行文件的资源,包括(EXE,DLL,OCX)等。是方便强大的汉化工具,可以直接修改用 VC++ 及 DELPHI 编制的程序的资源,包括菜单、对话框、字符串表等

新版可以直接查看 加壳文件的资源

我们打开eXeScope

找到如下字串符

122,"序列号输入错误 "

123,"恭喜您成为WebEasyMail正式用户中的一员! "

124,注册成功

125,失败

重点是122

步骤6

再次返回 w32dasm

Possible Reference to String Resource ID=00122: "鲹e"

但是双击后

提示说找不到这个字串符

不是没有 是因为 "鲹e"是乱码 w32dasm对于中文显示不是太好

毕竟不是国产软件

先把今天会用到的汇编基本指令跟大家解释一下

mov a,b ;把b的值赋给a,使a=b

call :调用子程序 ,子程序以ret结为

ret :返回主程序

je或jz :若相等则跳转

jne或jnz :若不相等则跳转

push xx:xx 压栈

pop xx:xx 出栈

栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。

我们搜索

Possible Reference to String Resource ID=00122

因为对E文支持很好

我们来到了

Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00406F17(C) //跳转来自 406F17

|

Possible Reference to String Resource ID=00125: "1%"

|

:004070DD 6A7D push 0000007D

:004070DF 8D4C2410 lea ecx, dword ptr [esp+10]

:004070E3 E8F75A1200 call 0052CBDF

Possible Reference to String Resource ID=00122: "鲹e"

|

:004070E8 6A7A push 0000007A

:004070EA 8D4C2408 lea ecx, dword ptr [esp+08]

:004070EE E8EC5A1200 call 0052CBDF

我们来到

:00406F01 8B876C080000 mov eax, dword ptr [edi+0000086C]这里是对

:00406F07 8B4C2408 mov ecx, dword ptr [esp+08]

:00406F0B 50 push eax//这两个eax和ecx入栈就比较让我们怀疑了

:00406F0C 51 push ecx//产生注册码

:00406F0D E8AE381100 call 0051A7C0//这CALL里对注册位应该会有设置

:00406F12 83C40C add esp, 0000000C

:00406F15 85C0 test eax, eax// 检测注册位

:00406F17 0F85C0010000 jne 004070DD //不存在注册位 就会跳到4070DD就会出现那个错误的字串符了

我们记住406F01这个地址

接着进行下一步

步骤7

这一步我们进行的是调试

用到的软件是ollydbg

好了我们找到了 注册码0012AF04 00FD4A10 ASCII "04893e058f9c1c9fb16764c3b86f78e6"

但是这个并不是我们的主要目的

我们还要做出属于自己的注册机

相信这个是很多人梦寐以求的事情

步骤8

制作注册机

注册机我们需要的是一个KEYMAKE的软件

因为20是演示版而且停止更新了

所以我们用173版

做一个内存注册机 需要下面几个资料

中断地址:406F0C

中断次数:1

第一字节:51

指令长度:1

好了 一个完美的注册机 就产生了

还不赶快发给你的朋友 炫耀一下

保证让他迷糊死 佩服得你要死

其实最后还有几个步骤

就是撰写破文

不过大家都是新手 这个步骤 就去了吧

不知不觉说了这么多废话 希望能对大家有些作用

如果有什么不懂 不理解的事情 请联系我 或者到论坛发贴

QQ:9595859

MSN:kcarhc@163com

今天的课程就到这里 大家赶快去动手实践吧~!

--------------------------------------------------------------------------------

-- 作者:admin

-- 发布时间:2005-10-11 11:13:00

-- 实战查壳脱壳制作破解注册机最详细的教程

大家好,我是kcarhc

今天8月1日了 刚从医院回来 正好凌晨

这期的课程做晚了 这里给大家道个歉

8月1日 如果我没记错

是建军节

既然是建军节 也要象征性的弄些东西来

为了建军节 这期我选择打击黑暗势力--黑社会

那么今天的主题就是

-----------

迎接建军节,铲除黑社会

-----------

首先介绍软件

黑社会20

[功能简介]:

1 五大必备功能

远程屏幕; 完全控制; 文件传送; Telnet; 远程关机

2 提供IP反d定位功能

可以通过静态IP动态域名,网页文件的方式反d通知IP

3 集成vidc客户端

内网的朋友想用自动上线功能,可以实现了

4 本软件集成了常用攻击工具(如OpenTelnet OpenTftp等)

通过IPC拷贝,而且带有标准的拷贝进度,全球首次面世;

opentelnet就不介绍了,相信大家都知道;

opentftp为本软件独创,可以远程开启tftp服务;

5 本软件集成的极速端口扫描器(扫描速度世界领先)

最开始我用的扫描器是大名鼎鼎的SuperScan30,感觉速度很慢;

后来改用SSPort10 扫描速度有了明显的提高

经过速度对比,本软件扫描速度比SSPort快 1/3 ,是SuperScan的N倍!!!

我的机器是 赛扬700+256M内存,一般扫描速度为180台/秒;

一些号称可以达到1000台/秒的扫描器在本机上试验只有120台/秒

--------------------

准备工作:

安装黑社会

--------------------

步骤一 查壳

Peid v092

ASPack 212 -> Alexey Solodovnikov、

--------------------

步骤二 脱壳

手动脱壳

快速脱掉ASPACK所有版本的方法

的OEP关键点在下面

0048D3AF 61 POPAD

0048D3B0 75 08 JNZ SHORT 黑社会0048D3BA

0048D3B2 B8 01000000 MOV EAX,1

0048D3B7 C2 0C00 RETN 0C//402c4a

0048D3BA 68 00000000 PUSH 0

402ca4就是我们要找的OEP

自动脱壳

AspackDie v141

这是一个小小的 PE 文件解压缩器 (EXE, DLL, ) 她可以解压缩

自 Aspack 2000 以后的任何 Aspack 版本 包括:

- Aspack 2000

- Aspack 2001

- Aspack 21

- Aspack 211

- Aspack 211c/d

- Aspack 212

- Aspack 212a/b

- 一些未知的版本

-------------------

步骤三 试运行程序 发现突破点

看到关键字符串

“注册码错误!”

-------------------

步骤四 W32DASM 寻找突破点

用w32dasm载入已经脱壳的程序

字符串察看

未发现 字符串 而是发现一堆乱码

大家于是一定想到了第一节的办法

用EXESCOPE

-------------------

步骤四 察找 字符串

打开eXeScope 并载入 但是发现 都没有字符串

这项

为啥呢?大家一定会疑问

一般用eXeScope查不到

我们将开始

-------------------

步骤五 查询软件的编译类型

Peid v092

Microsoft Visual Basic 50 / 60

--------------------

步骤六 采用GetVBRes v051 对付VB程序

GetVBRes v051 一个非常好的VB汉化工具

对于VB程序 我们用专门汉化用的GetVBRes v051来对付它

也许有人不理解 为啥用汉化工具呢

其实eXeScope也属于汉化工具

GetVBRes载入黑社会

发现没有乱码了

看到的全是完整的字符

我们找到了

注册码错误!

这个字符串

接着为了能搞到程序关键点地址

我们把“注册码错误!”

改成111111

为啥改成111111因为111111111

保存修改

---------------------

步骤六 用W32Dasm载入修改后的文件

发现字符串中有111111

那个就是我们修改的 原来是“注册码错误!”

Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:004792EF(C)

|

:00479474 B904000280 mov ecx, 80020004

:00479479 B80A000000 mov eax, 0000000A

:0047947E 894D9C mov dword ptr [ebp-64], ecx

:00479481 894DAC mov dword ptr [ebp-54], ecx

:00479484 894DBC mov dword ptr [ebp-44], ecx

:00479487 8D5584 lea edx, dword ptr [ebp-7C]

:0047948A 8D4DC4 lea ecx, dword ptr [ebp-3C]

:0047948D 894594 mov dword ptr [ebp-6C], eax

:00479490 8945A4 mov dword ptr [ebp-5C], eax

:00479493 8945B4 mov dword ptr [ebp-4C], eax

Possible StringData Ref from Code Obj ->"1111111" //刚才我们看到的注册吗错误的哦

|

:00479496 C7458C98194100 mov [ebp-74], 00411998

:0047949D C7458408000000 mov [ebp-7C], 00000008

发现跳转来自到4792EF

安照习惯 我们来到4792EF后 接着向前看

看到一个跳到这里的那个地址

这里是40928C

Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00479278(C)

|

:0047928C 8B55E4 mov edx, dword ptr [ebp-1C]

Reference T MSVBVM60__vbaStrMove, Ord:0000h

|

:0047928F 8B3578124000 mov esi, dword ptr [00401278]

:00479295 8D4DE0 lea ecx, dword ptr [ebp-20]

:00479298 895DE4 mov dword ptr [ebp-1C], ebx

:0047929B FFD6 call esi

:0047929D 8B4DE8 mov ecx, dword ptr [ebp-18]

:004792A0 6A01 push 00000001

:004792A2 8D55E0 lea edx, dword ptr [ebp-20]

:004792A5 51 push ecx

:004792A6 52 push edx

:004792A7 E8440F0000 call 0047A1F0

:004792AC 8BD0 mov edx, eax

:004792AE 8D4DDC lea ecx, dword ptr [ebp-24]

:004792B1 FFD6 call esi

:004792B3 50 push eax

:004792B4 53 push ebx

Reference T MSVBVM60__vbaInStr, Ord:0000h

|

:004792B5 FF15E8114000 Call dword ptr [004011E8]

:004792BB 8BF0 mov esi, eax

:004792BD 8D45E8 lea eax, dword ptr [ebp-18]

:004792C0 F7DE neg esi

:004792C2 8D4DDC lea ecx, dword ptr [ebp-24]

:004792C5 50 push eax

:004792C6 1BF6 sbb esi, esi

:004792C8 8D55E0 lea edx, dword ptr [ebp-20]

:004792CB 51 push ecx

:004792CC 52 push edx

:004792CD F7DE neg esi

:004792CF 6A03 push 00000003

:004792D1 F7DE neg esi

Reference T MSVBVM60__vbaFreeStrList, Ord:0000h

|

:004792D3 FF150C124000 Call dword ptr [0040120C]

:004792D9 8D45D4 lea eax, dword ptr [ebp-2C]

:004792DC 8D4DD8 lea ecx, dword ptr [ebp-28]

:004792DF 50 push eax

:004792E0 51 push ecx

:004792E1 6A02 push 00000002

Reference T MSVBVM60__vbaFreeObjList, Ord:0000h

|

:004792E3 FF1548104000 Call dword ptr [00401048]

:004792E9 83C41C add esp, 0000001C

:004792EC 663BF3 cmp si, bx

:004792EF 0F847F010000 je 00479474

我们在

004792AC看到下面这些

EAX=0015A47C, (UNICODE "1000464401458371268751252821609291844811465000")

EDX=00000000

怀疑EAX为的

1000464401458371268751252821609291844811465000

为注册码

------------------

步骤七 用不确定正确的注册 尝试注册

1000464401458371268751252821609291844811465000

这个注册后

我们发现 注册成功

------------------

步骤八 制做注册机

Keymake v173

中断地址:4792AC

中断次数:1

第一字节:8B

指令长度:2

------------------

步骤九 发布注册机

找一个网站比如黑基或者你的朋友之间

------------------

步骤十 休息

黑社会终于干掉了

现在去找你的男朋友或者女朋友

老公或者老婆

找个地方聊聊天 放松放松

告诉他们 你刚刚把黑社会 摆平了

一定很有趣的

------------------

课程结束

------------------

有事情大家可以去论坛

不过你如果性子急

或者嫌我回复的速度慢

我建议你直接联系我

只要我在 基本可以马上给你解答

不在可以留言

我的两个****

QQ:9595859

MSN:kcarhc@163com

最后 说一个事

我的女朋友最近生病了

所以才导致这期的课程 这么晚才做出来

希望大家能理解我

我还希望大家能祝福她早日康复

不然的话

你们见到我的日子可能会少了

甚至可能会消失在你们眼前

好了不说了 今天就是到此OVER吧

---------- kcarhc

2004年8月1日 凌晨 沈阳

--------------------------------------------------------------------------------

-- 作者:admin

-- 发布时间:2005-10-11 16:42:00

-- 使用OllyDbg快速脱壳

作者:KU-凌 

目标:采用ASPACK、UPX加壳的NOTEPADEXE

工具:OllyDbg 109英文版、DUMP插件、PEditor

系统:Win98SE

关键词: 脱壳、OllyDbg、OD、DUMP、PUSHAD、POPAD

预备知识

  大多数壳都有一个共同的特点。在壳准备开始解压时都要执行PUSHAD,当壳解压

完时都要调用POPAD。到底PUSHAD和POPAD是什么干什么用的呢?其实PUSHAD是用来将

所有普通寄存器顺序进栈的指令,POPAD是所有普通寄存器顺序出栈指令。POPAD的出

栈顺序和PUSHAD相反。壳为了保护寄存器,便在解压前将所有寄存器进栈保护起来,

当解压完成后又将寄存器出栈,恢复其原貌,并将IP设置为原程序的OEP。这样我们就可以通过这个特点快速脱掉多种软件的壳。

ASPACK篇

  先用ASPACK将NOTEPADEXE加壳。用OllyDbg(以下简称OD)载入。看见光标停在

壳的入口处。

0040D001 > 60 PUSHAD ;壳的入口。准备开始解压,保护寄存器

0040D002E8 03000000CALLNOTEPAD0040D00A

……

我们不管它,直接向下翻页找POPAD指令。在40D3AF处找到POPAD

……

0040D3AF61 POPAD ;解压完成,恢复寄存器

0040D3B075 08 JNZSHORT NOTEPAD0040D3BA

0040D3B2B8 01000000MOVEAX, 1

0040D3B7C2 0C00RETN0C

0040D3BA68 CC104000PUSHNOTEPAD004010CC ;返回到原程序OEP处

0040D3BFC3 RETN

……

选定40D3AF这一行,F4运行到此处。在这里说明壳已经完成解压工作。并且返回到原

程序的入口处。F8单步到4010CC,这里便是原程序的OEP。用DUMP插件直接DUMP出来就可以了(在DUMP时注意将入口点改为10CC,即4010CC-400000=10CC,400000是映象基地址)。文件大小是77059字节,用PEditor重建PE头便可以了。未压缩的文件大小是53248字节,脱壳后的文件大小是60930字节。

UPX篇

  用UPX将NOTEPADEXE加壳,然后用OD载入。停在PUSHAD处,用脱ASPACK同样的方

法,向下翻页找POPAD。

……

0040E9FE61 POPAD

0040E9FF - E9 C826FFFFJMPNOTEPAD004010CC

……

下面的JMP就是跳转到程序的OEP处。F4到40E9FF处,F8单步一下,来到OEP处,DUMP出来。DUMP文件的大小是65536字节,直接就可以运行。为了完美,用PEditor重建PE头。那么脱壳后的文件大小是60293字节。

后记

  用上面说的方法,很多种壳都可以快速的手动脱掉。如果你没有OD的DUMP插件,

可以到新论坛的下载区找。如果实在没有,也可以直接停在OEP处用PEDump来DUMP。很久没有写东西了。这一篇是写给初学者练手的。其实壳也是软件,再怎么复杂都有可能被脱下来。祝你好运。

  另外,转载时请保持本文的完整。

--------------------------------------------------------------------------------

-- 作者:admin

-- 发布时间:2005-10-11 17:10:00

-- 用Ollydbg手脱EncryptPE V12003518加壳的DLL

有兄弟让看看EncryptPE加壳的DLL,我说新版的就不行了,搞不定的。后来看是EncryptPE V12003518旧版加壳的,应该用的是老王老师发布的免费版。呵呵,所以脱了一下,顺便记录过程。

大家可以自己用EncryptPE V12003518免费版加个EdrLibdll看看。

—————————————————————————————————

一、避开IAT加密

设置Ollydbg忽略所有的异常选项。用IsDebug 14插件去掉Ollydbg的调试器标志。

添加“同时忽略0EEDFADE、C0000008、009B25C、00953D74”异常。

代码:--------------------------------------------------------------------------------

00877000 60 pushad//进入OD后停在这

00877001 9C pushfd

00877002 64:FF35 00000000 push dword ptr fs:[0]

00877009 E8 79010000 call EdrLib00877187

--------------------------------------------------------------------------------

下断:BP IsDebuggerPresent 断下后取消断点

现在我们Ctrl+G:711A0000

为何用这个地址?因为V12003518EPE是相同的。呵呵,钻了个旧版的空子。

其实可以再BP GetProcAddress,根据返回地址来判断。如果返回地址是711XXXXX,说明这是V12003518EPE的调用,就可以取消断点Ctrl+F9返回了。具体情况以堆栈的返回地址为准。

现在Ctrl+S 在“整个区段”搜索命令序列:

代码:--------------------------------------------------------------------------------

mov eax,edi

mov edx,dword ptr ss:[ebp-8]

mov dword ptr ds:[eax],edx

xor eax,eax

--------------------------------------------------------------------------------

找到在711A339F处,我们在711A339F处下个 硬件执行 断点。

现在我们关闭Ollydbg,重新载入这个dll,直接Shift+F9运行,中断在711A339F处

代码:--------------------------------------------------------------------------------

711A339F 8BC7 mov eax,edi

711A33A1 8B55 F8 mov edx,dword ptr ss:[ebp-8]

//改为: mov edx,dword ptr ss:[ebp-4] ★ 正确函数写入

711A33A4 8910 mov dword ptr ds:[eax],edx

711A33A6 33C0 xor eax,eax

711A33A8 5A pop edx

711A33A9 59 pop ecx

711A33AA 59 pop ecx

711A33AB 64:8910 mov dword ptr fs:[eax],edx

711A33AE EB 0A jmp short V1200351711A33BA

--------------------------------------------------------------------------------

把711A33A1处修改好之后,取消以前下的711A339F处的断点。

再Ctrl+S搜索命令序列:

代码:--------------------------------------------------------------------------------

add ebx,4

mov eax,dword ptr ss:[ebp-4C]

add eax,4

--------------------------------------------------------------------------------

找到在711A43C2处,我们在下面xor eax,eax的711A4401下断。Shift+F9运行

代码:--------------------------------------------------------------------------------

711A43C2 83C3 04 add ebx,4

711A43C5 8B45 B4 mov eax,dword ptr ss:[ebp-4C]

711A43C8 83C0 04 add eax,4

711A43CB 8945 B4 mov dword ptr ss:[ebp-4C],eax

711A43CE 8B03 mov eax,dword ptr ds:[ebx]

711A43D0 85C0 test eax,eax

711A43D2 0F87 39FDFFFF ja V1200351711A4111

711A43D8 A1 74C71B71 mov eax,dword ptr ds:[711BC774]

711A43DD 8038 00 cmp byte ptr ds:[eax],0

711A43E0 75 1F jnz short V1200351711A4401

711A43E2 8B45 C4 mov eax,dword ptr ss:[ebp-3C]

711A43E5 83C0 14 add eax,14

711A43E8 8945 C4 mov dword ptr ss:[ebp-3C],eax

711A43EB 8B45 C4 mov eax,dword ptr ss:[ebp-3C]

711A43EE 8378 0C 00 cmp dword ptr ds:[eax+C],0

711A43F2 76 0D jbe short V1200351711A4401

711A43F4 8B45 C4 mov eax,dword ptr ss:[ebp-3C]

711A43F7 8378 10 00 cmp dword ptr ds:[eax+10],0

711A43FB 0F87 38FCFFFF ja V1200351711A4039//循环处理IAT

711A4401 33C0 xor eax,eax//此处下断! ★

--------------------------------------------------------------------------------

当我们中断在711A4401处时IAT已经处理完毕,此时就可以用ImportREC得到正确的输入表了。

因为EncryptPE后面有自校验,所以我们返回711A33A1处,点右键->撤销选择,恢复原来的代码。

—————————————————————————————————

二、得到重定位表信息、获得OEP

Ctrl+S 在“整个区段”搜索命令序列:

在自然界中,我想大家对壳这东西应该都不会陌生的,植物用它来保护种子,动物用它来保护身体等等。同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的壳。它们一般都是先于程序运行,拿到控制权,然后做保护软件的工作。动植物的壳一般都是在身体外面同样软件的壳也是如此,但后来也出现了所谓的“壳中带籽”的壳。

从“壳”又延伸出“加壳”和“脱壳”两个词汇,“加壳”指的是对编译好的EXE、DLL等文件采用加壳来进行保护;“脱壳”指的就是将文件外边的壳去除,恢复文件没有加壳前的状态。

壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳、密码壳、加密壳三种。顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,常见的压缩壳包括FSG、ASPack、UPX、北斗等;加密壳也就是常说的保护壳、猛壳,它对程序输入表等内容进行加密保护,具有良好的保护效果,常见的加密壳包括ASPROTECT、ACPROTECT、PELock、幻影等;密码壳平时使用得不多,加密壳的程序只有在正确输入密码后才能运行。

案例

如今黑客使用病毒加壳,主要是对使用的木马等恶意程序进行保护,从而避免它们被杀毒软件所查杀。比如大名鼎鼎的冰河木马,原版本被作者用UPX加壳,可是这种加壳方式已经被杀毒软件列入封杀名单。

所以人们现在要使用冰河的时候,首先需要将原来的UPX壳脱掉,接着通过修改特征码、修改程序入口地址、加花指令等不同的方法进行免杀 *** 作,然后再加壳进行保护,这样一个免杀的冰河木马就诞生了。当然有的人可能不会去进行麻烦的免杀 *** 作,所以只要对脱壳的服务端程序进行多层加壳即可,不过一般都是先加加密壳,再加压缩壳,顺序不能颠倒。

简单防御方法

有人说过:壳之初,性本善。本来壳的诞生是为了帮助程序作者更好地保护自己编写的程序,但谁知道现在却成为了黑客的帮凶,为此我们更应该做好防范。

(一)通过Windows注册表监视工具对注册表的变化进行及时的监控,比如Regmon等,可以很好的实时监视并显示对整个系统注册表的访问,让用户了解某些恶意程序在系统运行后的状况。

(二)建立良好的安全习惯,不要打开一些来历不明的邮件及网页链接,不要到不确定的网页地址浏览及下载文件等。如果有可能的话,最好是在使用以前对文件的MD5值进行对比,防止黑客恶意对文件进行捆绑

包装的全名应该是压缩的可执行程序的资源,是保护文件的常用手段。

包装工可以直接通过该程序可以运行,但无法查看源代码要经过脱壳才可以查看源代码。

包装工:事实上,使用一种特殊的算法,EXE,DLL文件资源进行压缩。类似WINZIP的效果,但在此之后的压缩文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。

减压理论,在文件头里加了一些指令,告诉CPU,怎么解压自己包装工具。现在CPU的速度非常快,所以解压过程你所看到的。软件一旦打开,只有你的机器配置是非常差的,会觉得跑不加壳和加壳软件速后的差额。当封隔器,事实上,用一个涂层的可执行文件。这是由用户执行的壳。当您执行该程序会把这个情况下,原来的程序在内存中解锁,解锁后,后来就到真正的程序。因此,这些工作只是在内存中运行,不明白如何具体在内存中运行。常说的外壳加密,都是指网上很多免费或不免费的软件打包一些专门的加壳,基本上是压缩或不压缩程序。因为有时程序太大,你需要压缩。但大部分的程序是因为防止反跟踪,调试以防被人跟踪,以防止静态分析算法并不想成为别人的程序。代码和数据加密来保护您的应用程序数据的完整性。不能在程序中或偷看。

加“壳”说来虽然增加了CPU的时间,但降低了硬盘的读写,实际应用程序运行后加“壳”更快(当然,一些加“壳”后,它会减慢选择加“壳”工具的问题)。

通用软件加“壳”这不仅会保护自己的软件不被破解,也可能增加的速度在启动时运行。

加“壳”并不意味着木马,我们通常都增加了自己特殊的软件,绝大多数的“壳”。

RAR和ZIP压缩软件都不会添加到“壳”的工具,是需要进行磁盘读写 *** 作时,他们解开,解“壳”的压缩直接在内存中执行,RAR或ZIP压缩了病毒您尝试减压时间试用杀毒软件一定会找到,但有一个额外的“壳”,是指包装的老木马,反病毒软件可以发现不到几个就剩。

马加壳的原理很简单,大部分木马的阵营,其中很多都被黑客提供的,而这些治疗方法被称为加壳。妹妹说,当该程序后生成一个EXE一个好,很容易就能够利用诸如工具和拆卸工具来它的资源,但如果程序员EXE程序加一个壳,那么至少加壳的EXE程序也不是那么好,如果你想它必须先脱壳。拔毛机鹿清楚地了解每个包装是指木马,冰河与ASPACK,而灰鸽子进行包装UPX壳

以上就是关于各种各样的程序外壳都是怎么做出来的全部的内容,包括:各种各样的程序外壳都是怎么做出来的、什么是外壳程序、怎么理解外壳程序,外壳程序主要作用是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10216468.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存