问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

软件如何脱壳

发布网友 发布时间:2022-04-19 10:12

我来回答

4个回答

热心网友 时间:2023-08-27 10:03

步骤1 检测壳

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

壳的作用:
1.保护程序不被非法修改和反编译。
2.对程序专门进行压缩,以减小文件大小,方便传播和储存。

壳和压缩软件的压缩的区别是
压缩软件只能够压缩程序
而经过壳压缩后的exe、com和dll等程序文件可以跟正常的程序一样运行

下面来介绍一个检测壳的软件
PEID v0.92
这个软件可以检测出 450种壳
新版中增加病毒扫描功能,是目前各类查壳工具中,性能最强的。
另外还可识别出EXE文件是用什么语言编写的VC++、Delphi、VB或Delphi等。
支持文件夹批量扫描

我们用PEID对easymail.exe进行扫描
找到壳的类型了
UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
说明是UPX的壳
下面进行

步骤2 脱壳
对一个加了壳的程序,去除其中无关的干扰信息和保护*,把他的壳脱去,解除伪装,还原软件本来的面目。这个过程就叫做脱壳。
脱壳成功的标志
脱壳后的文件正常运行,功能没有损耗。
还有一般脱壳后的文件长度都会大于原文件的长度。
即使同一个文件,采用不同的脱壳软件进行脱壳,由于脱壳软件的机理不通,脱出来的文件大小也不尽相同。

关于脱壳有手动脱壳和自动脱壳
自动脱壳就是用专门的脱壳机脱 很简单 按几下就 OK了
手动脱壳相对自动脱壳 需要的技术含量微高 这里不多说了

UPX是一种很老而且强大的壳 不过它的脱壳机随处就能找到
UPX本身程序就可以通过
UPX 文件名 -d
来解压缩 不过这些需要的 命令符中输入
优点方便快捷 缺点DOS界面
为了让大家省去麻烦的操作 就产生了一种叫 UPX SHELL的外壳软件

UPX SHELL v3.09
UPX 外壳程序!
目的让UPX的脱壳加壳傻瓜化

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

脱完后 我们进行

步骤3
运行程序
尝试注册
获取注册相关信息

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

“序列号输入错误”

步骤4
反汇编

反汇编一般用到的软件 都是 W32Dasm
W32dasm对于新手 易于上手 操作简单
W32Dasm有很多版本 这里我推荐使用 W32Dasm 无极版

我们现在反汇编WebEasyMail的程序文件easymail.exe

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

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

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

我们打开eXeScope
找到如下字串符

122,"序列号输入错误 "
123,"恭喜您成为W ebEasyMail正式用户中的一员! "
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的软件
因为2.0是演示版而且停止更新了
所以我们用1.73版

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

中断地址:406F0C
中断次数:1
第一字节:51
指令长度:1

好了 一个完美的注册机 就产生了
还不赶快发给你的朋友 炫耀一下
保证让他迷糊死 佩服得你要死
其实最后还有几个步骤
就是撰写破文
不过大家都是新手 这个步骤 就去了吧

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

热心网友 时间:2023-08-27 10:03

软件编写以后有些人为了防止被破解或者其他目的就给软件加上壳.

所谓壳其实也就是一种压缩算法,可以将程序压缩

当然这个压缩不同于 WinRAR 的那个压缩.例如假设一个程序是100KB

用UPX压缩后大概是 40-60KB 压缩好后你再用WinRAR 压缩可能就只有10+KB了

他的原理很简单,先将本身的程序压缩,然后当对方运行时,先将本身程序放入内存,在内存中释放出来,当然这个解压速度非常快,基本感觉不出来.

但是程序未运行的时候是经过压缩的所以就可以避免被破解等.

下面是关键了:
什么是脱壳,一个软件经过压缩了以后速度会略微变慢,有些人出于提速,或者其他如破解目的,需要对软件进行脱壳,那么如何脱呢.

一般每个壳压缩算法都不一样(好象是废话)只要掌握其算法就可以逆推,达到脱壳的目的,这个只是一种比较常见的方法.

一些人还有中比较通用的方法,就是先将程序执行,这样程序在内存中被解压,然后将内存中的数据抓出来,保存到硬盘,这个方法基本所有壳通杀.

已经回答了2个了.

至于脱壳程序和没脱的(条件是软件有壳的情况下)

一般有壳程序运行速度会略微比较慢,程序大的比较明显.

加了壳的程序一般比较小.

另外就是加了壳的不容易被破解,

大致区别就这些了.

热心网友 时间:2023-08-27 10:04

那个没什么意思的。你所需要的就是ollydbg+peid 再就是汇编语言

热心网友 时间:2023-08-27 10:04

脱壳软件weram32
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 制作简单软件需要什么工具 .dll文件用什么软件打开? 不能注册DLL/OCX:DLLRegisterServer 失败;代码0x80004005未指定错误 OCX的控件怎样打开呢?用VB打开无法加载。怎样看到代码呢? 怎么提取exe文件里面的文字。。。 VB反编译器怎么用? 如何修改可执行文件“exe”中的文本 .ocx后缀的文件怎样打开? 如何打开原vb6.0下编写的ocx控件,进行重新编辑 404 Not Found 鸿蒙系统属于安卓吗? 干混砂浆配合比 干混砂浆和湿拌砂浆的区别 什么是DS砂浆 谁知道干混砂浆用途啊? 干混地面砂浆细度模数一般是多少? 什么叫干混砂浆?出厂做哪些检验? 干混砂浆密度标准要求 干混砂浆属于哪个类型?谢谢 1立方干混抹灰砂浆等于多少吨? 干拌砂浆和湿拌砂浆的区别是怎样的? 易语言 字节集数据 文本数据有什么区别 vb生成的exe文件 要替换其中的图片 应该怎么做? 将高版本的flash文件如何转化为低版本的,如cs6到8.0 做了一个ocx控件,怎么获取ocx所注册的目录 resource hacker怎么汉化 VB Decompiler 7.9 英文版怎么用 vb decompiler怎么使用 内存溢出 华为鸿蒙系统是安卓吗 微信怎么看共同好友多少个 个人微信怎么看好友有多少 微信有多少个好友怎么看 怎么统计微信加了多少人? 怎么知道有多少个微信好友 怎么查看我微信里的好友有多少? 教教我:怎么统计个人微信多少人? 微信如何统计一年共有多少个赞 怎么样统计微信朋友圈发表数量 如何查看微信一年获得多少赞 微信怎样知道有多少人给自己点赞了呢 肉末炒三丝是哪三丝