`
cfree
  • 浏览: 17849 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

脱壳基础(一)

阅读更多
1、PE文件:
    Microsoft设计了一种新的文件格式Portable Executable File Format(可移植的执行体即PE格式),该格式应用于所有基于Win32的系统:Windows NT、Windows 2000、Win32s及Windows 95/98。

2、基址(ImageBase ):
    是指装入到内存中的EXE或DLL程序的开始地址,它是Win32中的一个重要概念。 在Windows NT中,缺省的值是40000h;对于DLLs,缺省值为100000h。在Windows 95中,10000h不能用来装入32位的执行文件,因为该地址处于所有进程共享的线性地址区d3f2,因此Microsoft将Win32可执行文件的缺省基地址改变为400000h。

3、RVA:
    相对虚拟地址(Relative Virual Address),是某个项相对于文件映象地址的偏移。
例如:装载程序将一个文件装入到虚拟地址空间中,从
10000h开始的内存中,如果PE中某个表在映像中的起始地址是10464h,那么该表的RVA就是464h。
d0e9拟地址(RVA)a3bdc6abd2c6地址a3ab基址(ImageBase )

4、Entry Point:
    入口点,就是程序在完成了对原程序的还原后,开始跳转到刚还原程序执行,此时的地址就是入口点的值


5、SEH技术:
  结构化异常处理(StructuredExceptionHandling,SEH)是Windows操作系统处理程序错误或异常的技术。SEH是Windows操作系统的一种系统机制,与特定的程序设计语言无关。外壳程序里大量地使用了SEH,如果不了解SEH,将会使你跟踪十分困难。由于Ollydbg 对SEH处理异常灵活,因此脱壳用Ollydbg会大大提高效率

6、给自己穿件衣服……壳?:
    所谓加壳,是一种通过一系列数学运算,将可执行程序文件或动态链接库文件的编码进行改变(目前还有一些加壳软件可以压缩、加密驱动程序),以达到缩小文件体积或加密程序编码的目的。
  当被加壳的程序运行时,外壳程序先被执行,然后由这个外壳程序负责将用户原有的程序在内存中解压缩,并把控制权交还给脱壳后的真正程序,这就是我们找OEP的原因了。一切操作自动完成,用户不知道也无需知道壳程序是如何运行的。一般情况下,加壳程序和未加壳程序的运行结果是一样的。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,就把这样的程序称为“壳”了。
(PS:壳是指在一个程序的外面加上另外一段代码,保护里面的代码不被非法修改或者反编译。)

7、查壳:
    原理是利用查特征串搜索来完成识别工作的。各种开发语言都有固定的启动代码部分,利用这点就可识别出是何种语言编编译的。同样,不同的壳也有其特征码,利用这点就可识别是被何种壳所加密。PEiD提供了一个扩展接口文件userdb.txt,用户可以自定义一些特征码,这样就可识别出新的文件类型,当然有些外壳程序为了欺骗PEiD等文件识别软件,会伪造启动代码部分,例如将入口代码改成编程语言程序入口处类似代码,即可达到欺骗目的。所以,文件识别工具所给出的结果只是个参考,文件是否被加壳处理过,还得跟踪分析程序代码才可得知。对于菜鸟我们可以看EP区段或者看PEID的扩展信息看有没有壳~。
(PS:查壳和木马病毒查杀差不多|其实是十万八千里|)


8、没有绝对的安全……脱壳:
脱壳主要有两种方法:硬脱壳和动态脱壳。
第一种,是硬脱壳,这是指找出加壳软件的加壳算法,写出逆向算法,就像压缩和解压缩一样。由于现在的壳有加密、变形、虚拟环境等等特点,每次加壳生成的代码都不一样。硬脱壳对此无能为力,
第二种,是动态脱壳。加壳的程序运行时必须还原成原始形态,就是加壳程序运行后必须进行解压到程序的文件头。所以我们可以用OD跟踪到OEP的原因。这个时候我们就可以抓取(Dump)内存中的镜像,再重构成标准的执行文件。这样我们就脱壳了。
(PS:现在的加密壳更复杂一点,需要我们考虑的东西就更多了。)
分享到:
评论

相关推荐

    脱壳基础第一课 脱壳基础第一课

    脱壳基础第一课脱壳基础第一课脱壳基础第一课脱壳基础第一课

    脱壳入门基础

    脱壳入门基础 在一些计算机软件里有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然(但后来...

    脱壳基础知识入门--强烈推荐

    除了密码学的应用,越来越多的软件加壳了,因此要求解密者必须掌握一些脱壳技术,这就使得壳成了解密必须迈过的一个门槛。壳发展到今天,强度越来越高了,将许多人挡在门外,使得大家望壳兴叹。

    零基础脱壳破解第一课

    零基础脱壳破解第一课,大家一起学习脱壳,不再被骗子欺骗。。

    APP加固脱壳基础之APP启动、类加载初始化流程图.zip

    如果学习Android加固与脱壳不学习这些基础的话,那么后面加固点和脱壳点能让你轻轻松松看得云里雾里,不知所以。想学这一门手艺,该跨的门槛一点儿马虎不得,但是我有预感,当你把这些基础底层难啃的知识整出些门道...

    零基础脱壳破解第三课

    零基础脱壳破解第一课,大家一起学习脱壳,不再被骗子欺骗。。

    总结的一个VMP脱壳步骤

    个人在学习脱VMP加壳的过程中总结的一个步骤。按照这个步骤,包括VMP1.6—2.0在内应该有70%-80%能脱壳。

    零基础脱壳破解第二课

    零基础脱壳破解第一课,大家一起学习脱壳,不再被骗子欺骗。。

    脱壳经验谈之二-教会大家一些脱壳的基础知识

    脱壳经验谈之二本系列的目的在于教会大家一些脱壳的基础知识,分享个人的心得体会。 本篇不同于第一篇,内容相对少但是详细,力争把每个知识点讲清楚。我希望你能都看完,认真看!

    手动脱壳教程 第一课.手脱UPX的四种方法

    给大家的见面礼!呵呵 这是一个给菜鸟的基础教程。 1第一课.手脱UPX的四种方法

    反汇编脱壳

    一款反汇编脱壳教程,很实用,适合新手和有基础的!!!

    PE文件的UPX脱壳算法的实现

    接下来本文还分析了外壳的加载流程以及UPX的加壳流程,外壳的加载流程具有普遍规律,掌握外壳的加载流程是理解外壳的工作机制以及编写加壳脱壳程序的基础。最后针对UPX外壳采用动态脱壳设计方案,进行UPX动态脱壳...

    upx脱壳机 UPX最佳搭档 UPX Shell 3.4.2.2013 绿色中文增强版

    为了保证能正确地切换语言,我在修改程序时不修改内置的资源,而是在 English.lng 的基础上,参照程序内置的提示信息,进一步提取、整合,所有的界面词语均做到语言文件中!汉化版调整了主程序界面的字体为 Tahoma,...

    Android逆向基础

    Android逆向基础思维导图,便捷整理思路,环境搭建、APK结构与反编译、APK打包流程、APK安装流程

    软件破解入门教程.txt

    第2章 基础知识 基础知识 汇编速查手册 汇编跳转 浮点指令 分析技术 第3章 动态分析技术 工具安装与配制 工具操作入门 API函数简介 拆解教程 第4章 静态分析技术 基础知识 W32Dasm简介 IDA Pro简介 ...

    零基础破解第一课

    0基础破解培训初级班:1.认识破解工具及常用快捷键

    软件加密技术内幕 chm

    6.1 外壳编写基础 6.1.1 判断文件是否是PE格式的EXE文件 6.1.2 文件基本数据的读入 6.1.3 额外数据保留 6.1.4 重定位数据的去除 6.1.5 文件的压缩 6.1.6 资源区块的处理 6.1.7 区块的融合 6.1.8 ...

    加密与解密》随书光盘(二)工具.rar

    加密与解密》随书光盘(二)工具 本书在第一版的基础上,更新了第一版中的过时内容。 本书共分三个部分。 第一部分介绍与加密和解密技术相关的基础知识。 第二部分全面讲述各种最新的软件加密与解密技术及方法,如静态...

    加密与解密.第二版.part2

    为跟上技术发展的步伐,本书在第一版的基础上,更新了第一版中的过时内容,补充了许多新技术.本书全面讲述了Windows平台下的最新软件加密与解密技术及相关解决方案,采用循序渐进的方式,从基本的跟踪调试到深层拆解脱壳...

    加密与解密.第二版.part1

    为跟上技术发展的步伐,本书在第一版的基础上,更新了第一版中的过时内容,补充了许多新技术.本书全面讲述了Windows平台下的最新软件加密与解密技术及相关解决方案,采用循序渐进的方式,从基本的跟踪调试到深层拆解脱壳...

Global site tag (gtag.js) - Google Analytics