浅谈壳的加载步骤及手动脱壳(转载)
作者:不详 文章来源:不详 更新时间: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的方 ...
最新文章
- 由浅入深解读Redis高级能力及性能调优
- hdu 3577(线段树区间更新)
- 理解UIView的绘制
- C# 控制台或者winform程序开启http的监听状态
- Django之验证码的实现,简单快捷的方法
- 充值加油卡骗局:一次伪金融诈骗为何能圈数亿
- 从零开始的FPGA学习(2)(用三八译码器实现一位全加器)
- 针式打印机设置字号大小
- Huffman-哈夫曼编码算法详解
- MASM32编写TcpStatC再进阶 显示PID和对应进程说明符
- 【Bandit Algorithms学习笔记】EXP3算法理论证明
- 高铁检测试验软件,高铁规划要点及测试情况分析
- Vue 自定义移动端的 滑动事件
- 深度学习为什么会出现validation accuracy大于train accuracy的现象?
- 密码学原语如何应用?解析单向哈希的妙用|第9论
- 我常用的轻量化哈希校验工具,右键菜单栏一键计算文件Hash~
- java和android!怒斩获了30家互联网公司offer,分享PDF高清版
- 北斗导航 | 北斗/GNSS相关数据下载:IGS/IGMAS/MGEX/DCB/brdc/gamit/bernese/rinex等
- “git pull”如何强制覆盖本地文件?
- DIY Gamebuino Classic游戏机