程序脱壳是什么意思

程序脱壳是什么意思,第1张

壳的概念:

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

这里的压缩并不是我们平时使用的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 在“整个区段”搜索命令序列:

单步跟踪法

1用OD载入,点"不分析代码!"

2单步向下跟踪F8,实现向下的跳。也就是说向上的跳不让其实现!(通过F4)

3遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点-->运行到所选)

4绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!

5如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP

6在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入

7一般有很大的跳转(大跨段),比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN的一般很快就会到程序的OEP。

每遇到红线的跳转,就在跳转语句的下一句增加断点

这里应该是说在下面设置断点吧~

不明白没有关系多看慢慢理解

跳下面如果是nop可以在下一句F4

因为nop是无效句

所以在nop里面F4没有意义

跳分向上或者向下

向上的跳才在下面F4跳过

向下就不用咯~

因为程序是从上向下执行的~

如果他向上跳最执行下来

不设置断点跳过他

你猴年马月都到不了OEP

解决方法:

一加花指令。可以通过OD之类的软件修改你的软件的入口地址,加上花指令就可以了。下面是搜索到的常用花指令,直接复制过来的可能有重复。你可以试试,如果不够或不准确的话,你也可以自己搜索以下,当然你会汇编的话也可以写。

1伪装vc++50代码:

PUSH EBP

MOV EBP,ESP

PUSH -1

push 111111 -\___

PUSH 111111 -/ 在这段代码中类似这样的 *** 作数可以乱填

MOV EAX,DWORD PTR FS:[0]

PUSH EAX

MOV DWORD PTR FS:[0],ESP

ADD ESP,-6C

PUSH EBX

PUSH ESI

PUSH EDI

nop

jmp 原入口地址

2胡乱跳转代码:

push ebp

mov ebp,esp

inc ecx

push edx

ADD ESP,-6C

nop

pop edx

dec ecx

pop ebp

ADD ESP,6C

inc ecx

loop somewhere /跳转到上面那段代码地址去!

somewhere:

nop /"胡乱"跳转的开始

jmp 下一个jmp的地址 /在附近随意跳

jmp /

jmp 原入口地址 /跳到原始oep

3伪装c++代码:

push eax

mov ebp,esp

push -1

push 111111

push 111111

mov eax,fs:[0]

push eax

mov fs:[0],esp

pop eax

mov fs:[0],eax

pop eax

pop eax

pop eax

pop eax

mov ebp,eax

nop

nop

jmp 原入口地址

4伪装Microsoft Visual C++ 60代码:

PUSH -1

PUSH 0

PUSH 0

MOV EAX,DWORD PTR FS:[0]

PUSH EAX

MOV DWORD PTR FS:[0],ESP

SUB ESP,1

PUSH EBX

PUSH ESI

PUSH EDI

POP EAX

POP EAX

nop

POP EAX

nop

ADD ESP,1

POP EAX

MOV DWORD PTR FS:[0],EAX

POP EAX

POP EAX

nop

POP EAX

nop

POP EAX

MOV EBP,EAX

JMP 原入口地址

5伪装防杀精灵一号防杀代码:

push ebp

mov ebp,esp

push -1

push 666666

push 888888

mov eax,dword ptr fs:[0]

nop

mov dword ptr fs:[0],esp

nop

mov dword ptr fs:[0],eax

pop eax

pop eax

pop eax

pop eax

mov ebp,eax

jmp 原入口地址

6伪装防杀精灵二号防杀代码:

push ebp

mov ebp,esp

push -1

push 0

push 0

mov eax,dword ptr fs:[0]

push eax

mov dword ptr fs:[0],esp

sub esp,68

push ebx

push esi

push edi

pop eax

pop eax

pop eax

add esp,68

pop eax

mov dword ptr fs:[0],eax

pop eax

pop eax

pop eax

pop eax

mov ebp,eax

jmp 原入口地址

7伪装木马彩衣(无限复活袍)代码:

PUSH EBP

MOV EBP,ESP

PUSH -1

push 415448 -\___

PUSH 4021A8 -/ 在这段代码中类似这样的 *** 作数可以乱填

MOV EAX,DWORD PTR FS:[0]

PUSH EAX

MOV DWORD PTR FS:[0],ESP

ADD ESP,-6C

PUSH EBX

PUSH ESI

PUSH EDI

ADD BYTE PTR DS:[EAX],AL /这条指令可以不要!

jo 原入口地址

jno 原入口地址

call 下一地址

8伪装木马彩衣(虾米披风)代码:

push ebp

nop

nop

mov ebp,esp

inc ecx

nop

push edx

nop

nop

pop edx

nop

pop ebp

inc ecx

loop somewhere /跳转到下面那段代码地址去!

someshere:

nop /"胡乱"跳转的开始

jmp 下一个jmp的地址 /在附近随意跳

jmp /

jmp 原入口的地址 /跳到原始oep

9伪装花花添加器(神话)代码:-----------根据C++改

nop

nop

nop

mov ebp,esp

push -1

push 111111

push 222222

mov eax,dword ptr fs:[0]

push eax

mov dword ptr fs:[0],esp

pop eax

mov dword ptr fs:[0],eax

pop eax

pop eax

pop eax

pop eax

mov ebp,eax

mov eax,原入口地址

push eax

retn

10伪装花花添加器(无极)代码:

nop

mov ebp, esp

push -1

push 0A2C2A

push 0D9038

mov eax, fs:[0]

push eax

mov fs:[0], esp

pop eax

mov fs:[0], eax

pop eax

pop eax

pop eax

pop eax

mov ebp, eax

mov eax, 原入口地址

jmp eax

11伪装花花添加器(金刚)代码:--------根据VC++50改

nop

nop

mov ebp, esp

push -1

push 415448

push 4021A8

mov eax, fs:[0]

push eax

mov fs:[0], esp

add esp, -6C

push ebx

push esi

push edi

add [eax], al

mov eax,原入口地址

jmp eax

12伪装花花添加器(杀破浪)代码:

nop

mov ebp, esp

push -1

push 0

push 0

mov eax, fs:[0]

push eax

mov fs:[0], esp

sub esp, 68

push ebx

push esi

push edi

pop eax

pop eax

pop eax

add esp, 68

pop eax

mov fs:[0], eax

pop eax

pop eax

pop eax

pop eax

mov ebp, eax

mov eax, 原入口地址

jmp eax

12伪装花花添加器(痴情大圣)代码:

nop

省略N行nop

nop

push ebp

mov ebp, esp

add esp, -0C

add esp, 0C

mov eax, 原入口地址

push eax

retn

13伪装花花添加器(如果爱)代码:

nop

省略N行nop

nop

push ebp

mov ebp, esp

inc ecx

push edx

nop

pop edx

dec ecx

pop ebp

inc ecx

mov eax, 原入口地址

jmp eax

14伪装PEtite 22 -> Ian Luck代码:

mov eax,0040E000

push 004153F3

push dword ptr fs:[0]

mov dword ptr fs:[0],esp

pushfw

pushad

push eax

xor ebx,ebx

pop eax

popad

popfw

pop dword ptr fs:[0]

pop eax

jmp 原入口地址 '执行到程序的原有OEP

15无效PE文件代码:

push ebp

mov ebp,esp

inc ecx

push edx

nop

pop edx

dec ecx

pop ebp

inc ecx

MOV DWORD PTR FS:[0],EAX \

POP EAX |

POP EAX \

MOV DWORD PTR FS:[0],EAX |(注意了。。花指令)

POP EAX /

POP EAX |

MOV DWORD PTR FS:[0],EAX /

loop 原入口地址

16伪装防杀精灵终极防杀代码:

push ebp

mov ebp,esp

add esp,-0C

add esp,0C

push eax

jmp 原入口地址

17伪装木马彩衣(金色鱼锦衣)花代码

push ebp

mov ebp,esp

add esp,-0C

add esp,0C

mov eax,原入口地址

push eax

retn

18

在mov ebp,eax

后面加上

PUSH EAX

POP EAX

19伪装UPX花指令代码:

pushad

mov esi,m0044D000

lea edi,dword ptr ds:[esi+FFFB4000]

push edi

or ebp,FFFFFFFF

jmp short m00477F2A

20

push ebp

mov ebp,esp

inc ecx

push edx

pop edx

dec ecx

pop ebp

inc ecx

jmp 原入口

21、

push ebp

nop

nop

mov ebp,esp

inc ecx

nop

push edx

nop

nop

pop edx

nop

pop ebp

inc ecx

loop A1地址

nop

nop

A1:push ebp

mov ebp,esp

jo 原入口

jno 原入口

深层伪装 WCRT Library (Visual C++) DLL Method 1 -> Jibz

黑吧代码 + 汇编代码:

使用黑吧粘贴以下代码:

55 8B EC 83 7D 0C 01 75 41 A1 C0 30 00 10 85 C0 74 0A FF D0 85 C0 75 04 6A FE EB 17 68 0C 30 00 10 68 08 30 00 10 E8 89 00 00 00 85 C0 59 59 74 08 6A FD FF 15 08 20 00 10 68 04 30 00 10 68 00 30 00 10 E8 52 00 00 00 59 59

粘贴完毕后,再添加2行汇编语句:

jmp 原入口地址 '执行到程序的原有OEP

retn 0C

发布几个不常见的花指令

B1 01 mov cl,1

2C 90 sub al,90

95 xchg eax,ebp

4D dec ebp

65:42 inc edx

40 inc eax

20C4 and ah,al

8350 06 6E adc dword ptr ds:[eax+6],6E

226A E4 and ch,byte ptr ds:[edx-1C]

E8 B15FBC5B call 入口点

55 push ebp

8BEC mov ebp,esp

51 push ecx

53 push ebx

8BD8 mov ebx,eax

8BC3 mov eax,ebx

04 9F add al,9F

2C 1A sub al,1A

73 03 jnb 入口点

JMP SHORT test00414FB5 (EB 01)

NOP

JMP SHORT test00414FB8 (EB 01)

NOP

JMP SHORT test00414FBB (EB 01)

NOP

JMP test (EB 01)

90=c4

PUSH EBP

MOVE EBP,ESP

inc ecx

push eax

pop eax

push edx

pop edx

dec ecx

sub eax,-2

ADD ESP,68

DEC eax

DEC eax

SUB ESP,68

JPE 入口

JPO 入口

2008-6-13 11:30 dazy

花指令合集(0608)

深层伪装 PEtite 22 -> Ian Luck 汇编代码:

============================

伪装代码部分:

============================

mov eax,0040E000

push 004153F3

push dword ptr fs:[0]

mov dword ptr fs:[0],esp

pushfw

pushad

push eax

xor ebx,ebx

pop eax

popad

popfw

pop dword ptr fs:[0]

pop eax

jmp XXXXXXXX '执行到程序的原有OEP

============================

深层伪装 WCRT Library (Visual C++) DLL Method 1 -> Jibz 二进制代码 + 汇编代码:

============================

伪装代码部分:

============================

使用二进制粘贴以下代码:

55 8B EC 83 7D 0C 01 75 41 A1 C0 30 00 10 85 C0 74 0A FF D0 85 C0 75 04 6A FE EB 17 68 0C 30 00 10 68 08 30 00 10 E8 89 00 00 00 85 C0 59 59 74 08 6A FD FF 15 08 20 00 10 68 04 30 00 10 68 00 30 00 10 E8 52 00 00 00 59 59

粘贴完毕后,再添加2行汇编语句:

jmp XXXXXXXX '执行到程序的原有OEP

retn 0C

1。伪装 vc

VC++程序的入口代码:

PUSH EBP

MOV EBP,ESP

PUSH -1

push 415448 -\___

PUSH 4021A8 -/ 在这段代码中类似这样的 *** 作数可以乱填

MOV EAX,DWORD PTR FS:[0]

PUSH EAX

MOV DWORD PTR FS:[0],ESP

ADD ESP,-6C

PUSH EBX

PUSH ESI

PUSH EDI

ADD BYTE PTR DS:[EAX],AL /这条指令可以不要!

jmp 跳转到程序原来的入口点

2。跳转

somewhere:

nop /"胡乱"跳转的开始

jmp 下一个jmp的地址 /在附近随意跳

jmp /

jmp 原入口的地址 /跳到原始oep

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

新入口: push ebp

mov ebp,esp

inc ecx

push edx

nop

pop edx

dec ecx

pop ebp

inc ecx

loop somewhere /跳转到上面那段代码地址去!

3 伪装 C

融合

把A的代码换成B的

push ebp

mov ebp,esp

push -1

push 111111

push 222222

mov eax,fs:[0]

push eax

mov fs:[0],esp

pop eax

mov fs:[0],eax

pop eax

pop eax

pop eax

pop eax

mov ebp,eax

jmp 老入口

4 c ++

push ebp

mov ebp,esp

push -1

push 111111

push 222222

mov eax,fs:[0]

push eax

mov fs:[0],esp

pop eax

mov fs:[0],eax

pop eax

pop eax

pop eax

pop eax

mov ebp,eax

5Microsoft Visual C++ 60

PUSH -1

PUSH 0

PUSH 0

MOV EAX,DWORD PTR FS:[0]

PUSH EAX

MOV DWORD PTR FS:[0],ESP

SUB ESP,68

PUSH EBX

PUSH ESI

PUSH EDI

POP EAX

POP EAX

POP EAX

ADD ESP,68

POP EAX

MOV DWORD PTR FS:[0],EAX

POP EAX

POP EAX

POP EAX

POP EAX

MOV EBP,EAX

JMP 原入口

6

在mov ebp,eax

后面加上

PUSH EAX

POP EAX

7:

防杀精灵一号防杀代码:

push ebp

mov ebp,esp

push -1

push 666666

push 888888

mov eax,dword ptr fs:[0]

push eax

mov dword ptr fs:[0],esp

pop eax

mov dword ptr fs:[0],eax

pop eax

pop eax

pop eax

pop eax

mov ebp,eax

jmp 入口

8:

防杀精灵二号防杀代码:

push ebp

mov ebp,esp

push -1

push 0

push 0

mov eax,dword ptr fs:[0]

push eax

mov dword ptr fs:[0],esp

sub esp,68

push ebx

push esi

push edi

pop eax

pop eax

pop eax

add esp,68

pop eax

mov dword ptr fs:[0],eax

pop eax

pop eax

pop eax

pop eax

mov ebp,eax

jmp 入口

9

防杀精灵终极防杀代码

push ebp

mov ebp,esp

add esp,-0C

add esp,0C

push eax

jmp入口

10:

木马彩衣(金色鱼锦衣)花代码

push ebp

mov ebp,esp

add esp,-0C

add esp,0C

mov eax,原入口

push eax

retn

11:

木马彩衣(虾米披风)花代码

push ebp

nop

nop

mov ebp,esp

inc ecx

nop

push edx

nop

nop

pop edx

nop

pop ebp

inc ecx

loopd /跳转到下面那段代码地址去!

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

nop /"胡乱"跳转的开始

jmp 下一个jmp的地址 /在附近随意跳

jmp /

jmp 原入口的地址 /跳到原始oep

12

VC++50代码(木马彩衣无限复活袍):

PUSH EBP

MOV EBP,ESP

PUSH -1

push 415448 -\___

PUSH 4021A8 -/ 在这段代码中类似这样的 *** 作数可以乱填

MOV EAX,DWORD PTR FS:[0]

PUSH EAX

MOV DWORD PTR FS:[0],ESP

ADD ESP,-6C

PUSH EBX

PUSH ESI

PUSH EDI

ADD BYTE PTR DS:[EAX],AL /这条指令可以不要!

jo 00401000 /原入口

jno 00401000 /原入口

db 0e8h /花代码

xxxxxx: nop \

/|\ POP EAX |看了,其实这两部分就是花指令

| POP EAX |

| POP EAX /

| JMP yyyyyy (跳回旧入口点:00100016DB )

|

|

| push ebp <-新入口点:

| mov ebp,esp

| inc ecx

| push edx

| nop

| pop edx

| dec ecx

| pop ebp

| inc ecx

| MOV DWORD PTR FS:[0],EAX \

| POP EAX |

| POP EAX \

| MOV DWORD PTR FS:[0],EAX |(注意了。。花指令)

| POP EAX /

| POP EAX |

| MOV DWORD PTR FS:[0],EAX /

| loop xxxxxx (这里我向上跳~地址也是自己选的~~)

|_________________++++++(转到地址:100036c3 往回跳)

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

代码如下: 神话

nop

nop

nop

mov ebp,esp

push -1

push 111111

push 222222

mov eax,dword ptr fs:[0]

push eax

mov dword ptr fs:[0],esp

pop eax

mov dword ptr fs:[0],eax

pop eax

pop eax

pop eax

pop eax

mov ebp,eax

mov eax,原入口

push eax

retn

代码如下: 无极

nop

mov ebp, esp

push -1

push 0A2C2A

push 0D9038

mov eax, fs:[0]

push eax

mov fs:[0], esp

pop eax

mov fs:[0], eax

pop eax

pop eax

pop eax

pop eax

mov ebp, eax

mov eax, 原入口

jmp eax

代码如下: 金刚

nop

nop

mov ebp, esp

push -1

push 415448

push 4021A8

mov eax, fs:[0]

push eax

mov fs:[0], esp

add esp, -6C

push ebx

push esi

push edi

add [eax], al

mov eax,原入口

jmp eax

代码如下: 杀破浪

nop

mov ebp, esp

push -1

push 0

push 0

mov eax, fs:[0]

push eax

mov fs:[0], esp

sub esp, 68

push ebx

push esi

push edi

pop eax

pop eax

pop eax

add esp, 68

pop eax

mov fs:[0], eax

pop eax

pop eax

pop eax

pop eax

mov ebp, eax

mov eax, 原入口

jmp eax

代码如下: 痴情大圣

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

push ebp

mov ebp, esp

add esp, -0C

add esp, 0C

mov eax, 原入口

push eax

retn

代码如下: 如果爱

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

nop

push ebp

mov ebp, esp

inc ecx

push edx

nop

pop edx

dec ecx

pop ebp

inc ecx

mov eax, 原入口

jmp eax

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

灰鸽子万能文件捆绑器 VIP2005 -> 葛军

push ebp

mov ebp,esp

add esp,-124

push ebx

push esi

push edi

xor eax,eax

mov dword ptr ss:[ebp-124],eax

jmp 入口

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

PUSH EBP

MOV EBP,ESP

MOV EAX,0

PUSH EAX

CALL 下个指令 ↓

POP EAX

SUB EAX,0

MOV ECX,0

MOV EDX,0

MOV ESI,0

MOV EDI,0

MOV EBP,0

ADD EBP,EAX

POP EAX

POP EAX

POP EAX

POP EAX

POP EBP

PUSH 入口点

RETN

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

//Borland Delphi 60 - 70

PUSH EBP

MOV EBP,ESP

MOV ECX,6

PUSH 0 下面那个跳到这里

PUSH 0

DEC ECX

JNZ 往回跳

PUSH EBX

PUSH ESI

PUSH EDI

POP EDI

POP ESI

POP EBX

JMP 入口点

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

push ebp

mov ebp,esp

inc edx

nop

pop edx

dec ecx

pop ebp

inc ecx

jmp 入口点

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

push ebp

mov ebp,esp

push ebx

mov ebx,dword ptr ss:[ebp+8]

push esi

mov esi,dword ptr ss:[ebp+C]

push edi

mov edi,dword ptr ss:[ebp+10]

test esi,esi

jmp 入口

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

0046D4BA pop eax

0046D4BB sub eax,7D

0046D4C0 push eax

0046D4C1 C3 retn

0046D4C2 call 0046D4BA

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

伪装VC7。0花

最近抓的伪装VC7。0的花,很短

//---------------------------------

push 70

push 123456(数字随便)

call A(A为地址)

xor ebx,ebx

A地址:retn

2008-6-13 11:30 dazy

1POP 0

POP 0

2PUSH ebp

pop ebp

3nop ----一般插在中间

4jmp 一下jmp的地址

jmp

5add esp,1 ----数字可以改变

sub esp,1

6 add esp,1

add esp,-1

7sub esp,1

sub esp,-1

8push esi

push edi

9inc ecx

dec ecx

10 sub eax,-2

dec eax

dec eax

11(该免杀花指令经典,压缩可运行,免卡巴)

push ebp

mov ebp,esp

pop esp

jmp 原入口点地址-

jmp XXXXXX等价于:

PUSH XXXXXX

RETN

12 免杀卡巴的花指令:

push ebx

push ebx

push ebx

pop ebx

pop ebx

pop ebx

jmp 跳到下一个地址

add esp,1

add esp,-1

push 入口点地址

retn

12(同上)

push ebp

push esp

pop ebp

pop esp

jmp 原入口点地址

13最新的一段万能免杀花指令:

push ebp

push esp

pop ebp

add esp,-0C

add esp,0C

push eax

jmp入口

14免杀花指令

push ebp

mov ebp,esp

add esp,-0C

add esp,0C

push eax

mov eax,入口地址

jmp eax

nop

15

jmp 改成:Jg(大于转移),JL(小于转移)

或改成:jb(小于转移),jnb(大于或等于转移)

16写过卡巴花指令的跳不要直接用jmp来跳,不然,要被直接杀

jmp ---直接被杀

改成

jb

jnb

或改成:

push 入口地址

retn

或改成:

mov eax,入口地址

jmp eax

17一段免杀卡巴的花指令:

push ebx

push ebx

pop ebx

pop ebx

add esp,1

add esp,-1

push 入口地址

retn

二。可以通过加壳工具,让别人识别不出来你用什么编写的。加壳工具分压缩壳和加密壳。我就不再列出了。

注意:因为有的人做木马或病毒通过加花或加壳来实现免杀。所以有的是会被杀毒软件认为是木马或病毒。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

程序运行到OEP 10CC后,打开LordPE,在当前进程脱壳

但脱出的文件大小发生了变化。

可是用PEiD查下入口,仍旧是原来ASPACK的壳的入口

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

你伤脑筋啊

OD 加载程序后

当运行至OEP 时

此时就要用LordPE DUMP 一个RAW DUMPEXE

但接着的动作你却没做

接着要用ImportREC 接续那OD 解码至OEP 时的修正

修正后文件存盘至LordPE 转储的 DUMPEXE

存盘后(算是以DUMPEXE APPEND) 得到 DUMP_EXE

这样理解了嘛

问题一:软件破解有没有通用万能的脱壳的好工具?asprotect壳有什么工具可以脱掉? (一)壳的概念

作者编好软件后,编译成exe可执行文件。 1有一些版权信息需要保护起来,不想让别人随便改动,如作者的姓名等,即为了保护软件不被破解,通常都是采用加壳来进行保护。 2需要把程序搞的小一点,从而方便使用。于是,需要用到一些软件,它们能将exe可执行文件压缩, 3在黑客界给木马等软件加壳脱壳以躲避杀毒软件。

实现上述功能,这些软件称为加壳软件。

(二)加壳软件最常见的加壳软件ASPACK ,UPX,PEpact 不常用的加壳软件WWPACK32;PE-PACK ;PETITE ;NEOLITE

(三)侦测壳和软件所用编写语言的软件,因为脱壳之前要查他的壳的类型。 1侦测壳的软件fileinfoexe 简称fiexe(侦测壳的能力极强) 2侦测壳和软件所用编写语言的软件languageexe(两个功能合为一体,很棒) 推荐language2000中文版(专门检测加壳类型) 3软件常用编写语言Delphi,VisualBasic(VB)---最难破,VisualC(VC)

(四)脱壳软件。 软件加壳是作者写完软件后,为了保护自己的代码或维护软件产权等利益所常用到的手段。目前有很多加壳工具,当然有盾,自然就有矛,只要我们收集全常用脱壳工具,那就不怕他加壳了。软件脱壳有手动脱壳和自动脱壳之分,下面我们先介绍自动脱壳,因为手动脱壳需要运用汇编语言,要跟踪断点等,不适合初学者,但我们在后边将稍作介绍。

加壳一般属于软件加密,现在越来越多的软件经过压缩处理,给汉化带来许多不便,软件汉化爱好者也不得不学习掌握这种技能。现在脱壳一般分手动和自动两种,手动就是用TRW2000、TR、SOFTICE等调试工具对付,对脱壳者有一定水平要求,涉及到很多汇编语言和软件调试方面的知识。而自动就是用专门的脱壳工具来脱,最常用某种压缩软件都有他人写的反压缩工具对应,有些压缩工具自身能解压,如UPX;有些不提供这功能,如:ASPACK,就需要UNASPACK对付,好处是简单,缺点是版本更新了就没用了。另外脱壳就是用专门的脱壳工具来对付,最流行的是PROCDUMP v162 ,可对付目前各种压缩软件的压缩档。在这里介绍的是一些通用的方法和工具,希望对大家有帮助。我们知道文件的加密方式,就可以使用不同的工具、不同的方法进行脱壳。下面是我们常常会碰到的加壳方式及简单的脱壳措施,供大家参考: 脱壳的基本原则就是单步跟踪,只能往前,不能往后。脱壳的一般流程是:查壳->寻找OEP->Dump->修复 找OEP的一般思路如下: 先看壳是加密壳还是压缩壳,压缩壳相对来说容易些,一般是没有异常,找到对应的popad后就能到入口,跳到入口的方式一般为。 我们知道文件被一些压缩加壳软件加密,下一步我们就要分析加密软件的名称、版本。因为不同软件甚至不同版本加的壳,脱壳处理的方法都不相同。

常用脱壳工具: 1、文件分析工具(侦测壳的类型):Fi,GetTyp,peid,pe-scan, 2、OEP入口查找工具:SoftICE,TRW,ollydbg,loader,peid 3、dump工具:IceDump,TRW,PEditor,ProcDump32,LordPE 4、PE文件编辑工具:PEditor,ProcDump32,LordPE 5、重建Import Table工具:ImportREC,ReVirgin 6、ASProtect脱壳专用工具:Caspr(ASPr V11-V12有效),Rad(只对>>

问题二:软件如何脱壳,用什么软件脱壳 首先你要检查一下加的什么壳,要是你检测时候发现是VC++写的,那就说明没加壳,自然就不需要脱壳。用什么加的壳,先PEid查看一下,然后再去找专门的脱壳工具,一旦检测出壳的种类,就可以脱壳了。

问题三:万能脱壳工具QuickUnpack怎么脱壳 (QuickUnpack)使用方法

1、点击打开文件选择要脱壳的文件

2、点击连接进程选择要连接的进程和模板

3、点击完全脱壳开始脱壳

问题四:软件破解脱壳法 什么是脱壳技术?

在一些电脑软件里有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。就像电脑病毒和自然界的病毒一样,其实都是命名上的方法罢了。从功能上抽象,软件的壳和自然界中的壳相差无几。无非是保护、隐蔽壳内的东西。而从技术的角度出发,壳是一段执行于原始程序前的代码。原始程序的代码在加壳的过程中可能被压缩、加密……。当加壳后的文件执行时,壳这段代码先于原始程序运行,他把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。 软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP(入口点,防止被破解)。关于“壳”以及相关软件的发展历史请参阅吴先生的《一切从“壳”开始》。

(一)壳的概念:作者编好软件后,编译成exe可执行文件。

1有一些版权信息需要保护起来,不想让别人随便改动如作者的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。

2需要把程序搞的小一点,从而方便使用。于是需要用到一些软件,它们能将exe可执行文件压缩。

3在黑客界给木马等软件加壳脱壳以躲避杀毒软件。实现上述功能,这些软件称为加壳软件。

(二)加壳软件最常见的加壳软件ASPACK ,UPX,PEpact 不常用的加壳软件WWPACK32;PE-PACK;PETITE NEOLITE

(三)侦测壳和软件所用编写语言的软件,因为脱壳之前要查他的壳的类型。

1侦测壳的软件 fileinfoexe 简称 fiexe (侦测壳的能力极强)。

2侦测壳和软件所用编写语言的软件languageexe(两个功能合为一体,很棒)推荐。language2000中文版(专门检测加壳类型)。

3软件常用编写语言Delphi;VisualBasic (VB)最难破;VisualC (VC)。

(四)脱壳软件。

软件加壳是作者写完软件后,为了保护自己的代码或维护软件产权等利益所常用到的手段。目前有很多加壳工具,当然有盾,自然就有矛,只要我们收集全常用脱壳工具,那就不怕他加壳了。软件脱壳有手动脱和自动脱壳之分,下面我们先介绍自动脱壳,因为手动脱壳需要运用汇编语言,要跟踪断点等,不适合初学者,但我们在后边将稍作介绍。

=======================================================================

加壳一般属于软件加密,现在越来越多的软件经过压缩处理,给汉化带来许多不便,软件汉化爱好者也不得不学习掌握这种技能。现在脱壳一般分手动和自动两种,手动就是用TRW2000、TR、SOFTICE等调试工具对付,对脱壳者有一定水平要求,涉及到很多汇编语言和软件调试方面的知识。而自动就是用专门的脱壳工具来脱,最常用某种压缩软件都有他人写的反压缩工具对应,有些压缩工具自身能解压,如UPX;有些不提供这功能,例如:ASPACK,就需要UNASPACK对付,好处是简单,缺点是版本更新了就没用了。另外脱壳就是用专门的脱壳工具来对付,最流行的是PROCDUMP v162,可对付目前各种压缩软件的压缩档。在这里介绍的是一些通用的方法和工具,希望对大家有帮助。我们知道文件的加密方式,就可以使用不同的工具、不同的方法进>>

问题五:有没有万能的中文版脱壳机!怎么使用! 小生我怕怕工具包有你所要的,至于怎么用望自学成才。

问题六:软件脱壳工具有哪些 10分 常见的脱壳工具有两种:

1。OD自带脱壳插件

鼠标右键菜单,选择Dump debugged process->设置Entry Point->点击Dump

2LordPE

LordPE进程列表中选择目标进程->鼠标右键菜单,选择完整脱壳;

脱壳步骤

查壳

使用PEID, PE-SCAN等查壳工具查壳

查找OEP

使用OllyDbg跟踪调试找到OEP

脱壳

右键使用OLLYDBG自带的脱壳插件

修复

脱下的程序如果不能执行,使用Import ReConstructor工具修复

问题七:万能脱壳工具QuickUnpack怎么脱壳 万能脱壳工具(QuickUnpack)使用方法

1、点击打开文件选择要脱壳的文件

2、点击连接进程选择要连接的进程和模板

3、点击完全脱壳开始脱壳

问题八:软件如何脱壳 步骤1 检测壳

壳的概念:

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

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

壳的作用:

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

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

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

压缩软件只能够压缩程序

而经过壳压缩后的exe、和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

反汇编

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

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

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

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

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

步骤5

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

eXeScope v650

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

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

我们打开eXeScope

找到如下字串符

122,序列号输入错误

123,恭喜>>

问题九:将一个软件脱壳之后该怎么能做呢、 脱壳后要修复 如果脱壳后 能正常使用 就不用修复了没有壳后 可以修改程序里面的标签、标题、文本等可以用 c32 这个软件修改 查看原帖>>

求采纳

问题十:软件脱壳后用什么软件来修改 第一步,用fi243确定壳的类型,有自动脱壳工具的,用工具脱。否则第二步。

第二步,用bw2k确定程序的真正入口点OEP,不妨记为xxxx;若找不到,请试一试Softice + icedump: 使用Icedump 的/tracex 命令可能找到OEP 的地址;若还找不到,只能手动跟踪,看你的功力和运气了。

第三步,用trw装入(load)程序,下bpx xxxx,g。中断后用pedump命令脱壳,格式是

pedump c: est estexe。不能中断时运行superbpm,选中erase,重复第三步 *** 作。若脱出来的testexe可以运行,则脱壳完毕,否则第四步。

第四步, 用peditor 修正testexe,用Import REConstructor v12 beta2修复输入表,参照以下这篇文章

若还是不行,建议你用内存补丁或放弃暴破,去算注册号吧。

以下以S-Spline 204为例,讲一讲手动脱壳和修复import表的具体 *** 作步骤。S-Spline 204

第一步,用fi243确定壳的类型。fi243没有GUI界面,是命令行程序,用法是这样:

c:fi243fi s-splineexe。

Fi已经检测不出新版asprotect了,所以如果遇到检测不出的类型,就有可能是asprotect。接着往下做吧。

第二步,用bw2k确定程序的真正入口点OEP,

运行bw2k,面板上的entry point显示为00000000。按track钮,再运行s-splineexe,程序界面出来之后,bw2k的面板上entry point显示为7e910,这就是入口点了。退出s-spline,我们又迈出了可喜的第二步。

第三步,运行SuperBPM,选中erase(默认为不选中),确保trw能够中断。

第四步,运行trw2k,按browse找到并选中s-splineexe,按loader装入。下bpx 47e910,g。trwd出时输入pedump c: est estexe,退出trw(不退也行),但不要退出s-spline。在c: est下会找到testexe。这个程序目前还不能运行,因为它的import表是被加密的。

第五步,用peditor修正testexe。运行peditor,按browse找到testexe,确定。再按sections,d出一个窗口,显示每个section的信息。在窗口中点右键,在d出菜单中选dumpfixer(RS=VS & RO=VO),提示'DONE',这时可以关闭peditor了。

第六步,运行ImportREC12beta2,在Attach to an Active Process下拉框中选中s-splineexe,然后在左下方OEP中输入7e910(就是EP-image base=47e910-400000),按IAT AutoSearch。出现对话框Found Something!=》

以上就是关于程序脱壳是什么意思全部的内容,包括:程序脱壳是什么意思、做软件的脱壳时,怎么设置断点使跳转失效,哪位总结一下。、有什么工具可以伪装编程语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存