浅谈壳的加载步骤及手动脱壳(转载)
作者:不详 文章来源:不详 更新时间:2005-8-21
现在玩脱壳的人越来越多了,不知道是好事还是坏事。 不过如果这样,那么我想手动脱壳也没有必要了,因为更先进的工具如各种脱壳机会更快捷有效。既然是手动脱壳,当然想对壳有所了解,那么让我们看看壳是如何工作的吧。 现在的执行文件一般都是PE格式,如果你对PE格式一无所知,最好还是去看一看相关的资料。我没有那么地道的专业知识,也怕误人子弟。 相关名词 2)Section (节区) 3)ImageBase (基地址) 所以如果我们把相对虚拟地址(RVA)看成是坐标的偏移量的话,那么ImageBase就是原点了。有了这个原点,一切都简单了。 1)获取壳自己所需要使用的API地址 如果你用PE查看工具看看加壳后的程序文件,会发现未加壳的程序文件和加壳后的程序文件的Import Table不太一样, 我想你不会认为壳只用这个API就可以做所有的事吧。 当然这其中壳可能会用到一些Anti技术,不过这和本文主旨无关,所以就不说了。 2)解密原程序的各个节区(Section)的数据 壳出于保护原程序代码和数据的目的,一般都会加密原程序文件的各个节区。既然是加密保存,那么在程序执行时你总不能也保持加密状态吧,所以解密是壳必做的工作之一。 如果加壳时用到了压缩技术,那么在解密之前还有一道工序,当然是解压缩。 3)重定位 由于不需要对EXE文件进行\"重定位\",所以很多壳在加壳时把原程序文件中用于保存重定位信息的节区干脆也去掉了,这样使得加壳后的文件更加小巧。有些工具提供Wipe Reloc的功能,其实就是这个作用。 不过对于DLL的动态链接库文件来说,Windows系统没有办法保证每一次DLL运行时提供相同的基地址。这样\"重定位\"就很重要了。 此时壳中也需要提供进行\"重定位\"的代码,否则原程序中的代码是无法正常运行起来的。从这点来说,加壳的DLL比加壳的EXE更难修正。 4)HOOK-API 而壳一般都修改了原程序文件的Import Table,那么原程序文件的Import Table由谁来处理呢? 这样壳中的代码一旦完成了加载工作,在进入原程序的代码之后,仍然能够间接地获得程序的控制权。 5)最后当然是跳转到程序原入口点。 |
转载于:https://www.cnblogs.com/mo-cuishle/p/3635124.html
浅谈壳的加载步骤及手动脱壳(转载)相关推荐
- Java hibernate假外键_浅谈hibernate急迫加载问题(多重外键关联)
数据库结构如下 strategy中有外键member_id(关联member表)外键strategy_category(关联category表)而member表中有外键position_id(关联po ...
- 浅谈android中加载高清大图及图片压缩方式(二)
这一讲就是本系列的第二篇,一起来聊下关于android中加载高清大图的问题,我们都知道如果我们直接加载原图的话,一个是非常慢,需要等待一定时间,如果没有在一定的时间内给用户响应的话,将会极大影响用户的 ...
- php自动加载类与路由,PHP实现路由与类自动加载步骤详解
这次给大家带来PHP实现路由与类自动加载步骤详解,PHP实现路由与类自动加载步骤详解的注意事项有哪些,下面就是实战案例,一起来看一下. 项目目录如下 入口文件index.php<?php def ...
- Python基础知识学习(六)——包与模块:指令、包加载步骤、搜索范围
目录 1.模块的使用 2.包的使用 当我们项目越来越复杂,将所有功能写进一个脚本显然不是一个最优的方法,分门别类将不同的功能的语句.函数.对象封装在不同的模块里.什么是一个模块?模块非常简单就是一个p ...
- 从UIL库谈Android图片加载中需要注意的事情
Android Universal Image Loader 算是Android中最流行的图片加载库了,作者Sergey的确牛逼,能将整个Android图片加载的点点滴滴考虑的如此全面.网上研究这个开 ...
- 尚硅谷2020最新版宋红康JVM教程-中篇-第4章:再谈类的加载器-02和03-类的加载器分类
引言 JVM支持两种类型的类加载器,分别为引导类加载器(Bootstrap ClassLoader)和自定义类加载器(User-Defined ClassLoader). 从概念上来讲,自定义类加载器 ...
- 试简述smtp通信的三个阶段的过程_从输入URL到页面加载的过程?《转载》
这是我看过这个问题最完整/优质的回答了,转来分享 知乎的排版不太好,可以浏览博客原文: http://gaoxiang.ga/index.php/archives/36/gaoxiang.ga 前言 ...
- webrender 查看是否开启_想要体验极致顺滑的网页加载体验?手动开启Firefox WebRender渲染引擎...
昨天我们提到火狐浏览器最新稳定版Mozilla Firefox v67 版将面向部分用户开启WebRender渲染引擎测试. 据火狐浏览器团队介绍当用户开启新的渲染引擎后 , 网页加载帧率能够从现有 ...
- Javascript在页面加载时的执行顺序(转载)
原文:http://dancewithnet.com/2007/03/22/order-of-execution-of-javascript-on-web/ 一.在HTML中嵌入Javasript的方 ...
最新文章
- cocos2d-js 中的Chipmunk矢量:cp.Vect
- PDF编辑软件Nitro PDF Professional 6
- 解决ExcelReport导出Excel报Number of rules must not exceed 3错误的问题
- Java实例---计算器实例
- 大数据在互联网金融行业中的应用
- 2021-03-20 包含生成树的性质
- 不定字段数目的数据库表设计和数据结构
- VSCode的连Linux远程开发碰到的坑解决
- java做服务器端给客户端传数据包_java 服务器怎样给客户端传输数据
- HTML5基础一:常用布局标签
- 全栈深度学习第1期:如何启动一个机器学习项目?
- 阿里巴巴下一代云分析型数据库AnalyticDB入选Forrester Wave™ 云数仓评估报告 解读
- 分享 2 个“捷径”,帮你 6 个月达到阿里 P7 水平
- 关于ThreadPool.RegisterWaitForSingleObject和WaitHandle的应用介绍
- Activity 横竖屏切换
- FPGA BCD计数器(一位)
- oppo a57刷机成功教程
- 决策支持系统是什么?
- 《大话数据结构(C#实现)》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+软件架构设计+框架编程+数组+栈+链表+图+队列+树+堆+二叉树+哈希表+立钻哥哥+==)
- 计算机及软件工程专业职称,有关软件工程师职称