zoukankan      html  css  js  c++  java
  • 吾爱破解 培训第一课:破解基础知识之介绍常见工具和壳的特征 笔记

    吾爱破解 培训第一课:破解基础知识之介绍常见工具和壳的特征 笔记

    [《吾爱破解培训第一课:破解基础知识之介绍常见工具和壳的特征》讲师:Hmily](https://www.52pojie.cn/thread-378612-1-1.html)

    课件内容

    一个程序从编译出来的时候一般都是没有壳的,不同编译器编译出的无壳程序也是不相同的,认识了不同编译器编译出来的无壳的程序,再去看无壳程序被加壳程序加壳后的样子就轻松很多,经过对比从而了解不同语言无壳程序和加壳后程序的特征是什么,特征主要从“入口点代码”、“程序区段”和“加载模块”等信息来确定。

    一:程序是什么语言编译的

    • VC6特点:入口点代码是固定的代码,入口调用的API也是相同的,其中有的push地址不同程序可能不同;区段有四个也是固定的.text、.rdata、.data和.rsrc。
    • VS特点:入口点只有两行代码,一个CALL后直接JMP,第一个CALL进去后调用的API也是相同的;区段相对于VC6多了一个.reloc。
    • 易语言特点:可以从程序里找一些call的调用最终都会走到上面核心代码图位置(文字不太好表达),这个方法可以区分和VC的区别,非独立编译比较容易识别,入口特征和模块特征都有krnln.fnr。(易语言编译无壳程序分,独立编译和非独立编译,其中独立编译是调用VC的链接程序编译的,所以从区段和入口代码特征和VC相同。)

    二:如何识别加壳

    1. 通过[PEiD](http://down.52pojie.cn/Tools/PEtools/PEiD 0.95.rar)、Exeinfo PE查壳工具内置各种壳的十六进制特征码进行对比查壳

      PEiD、FFI、FastScanner、RDG Packer Detector这类程序都是通过目录下的userdb.txt(查壳程序不同可能数据库名有出入)数据库进行加壳程序特征对比的,由于userdb.txt文件都是好多年前的了,全球基本都在用fly在09年发布的UpKPEiDSign,即使有新的也都基于他制作的版本之上进行更新的,而且更新都没有太好效果,由于原理都是通过加壳程序的特征进行对应,而这些加壳特征都是个人总结而来,对加壳程序的模糊搜索对比造成可靠性不高,特别是对于VMProtect这类加密壳程序,经常被识别成一些算七八糟都没见过的加壳内容,特别是显示UPolyX,基本都是误报,对新手的误导很严重,但对于传统的一些压缩壳的识别效果还是很好的,当然了,有利有弊,正是由于它的开放性特征库,也方便给大家提供自己编写特征的方法,来识别一些新的壳,期待大家能做出自己的加壳特征来。
      
      Exeinfo PE属于新一代查壳工具,作者目前还在更新,它和PEiD的区别可能就在于它的特征库是作者自己维护,不支持外部修改,新版好像也开始支持外部特征库了,这款查壳工具的加壳特征库比较准确而且范围很广,如Themida、WinLicense、VMProtect、ZProtect、Shielden都可以轻松识别出来,但对于具体加壳程序的版本都是模糊的,其实个人认为加壳版本真的不重要,这个后面再具体说道,Exeinfo PE可以说是目前可以说最好的查壳工具了,推荐大家使用。
      
    2. 通过入口特征和区段特征来识别

      区段信息:可以通过PEiD的EP处点击获取到.
      入口特征:可以通过OllyDBG载入获得,载入后可以按一下“Ctrl+A”,让OD分析一下代码,就可以把入口点一些特征字符串分析出来.(对于Shielden、Safengine、VProtect这类加壳程序都可以使用这种方法判断出来)
      

    三:程序加的是什么壳

    windows程序状态大体可以分为以下几种类型:

    ​ 未加壳、压缩壳、传统加密壳、代码虚拟化保护、.Net程序加密等

    课后问题总结答疑

    1.简单脱壳方法

    • 找OEP

    • Dump镜像文件

    • 修复IAT

      IAT RVA = 00432000 - 00400000 = 32000

      IAT 大小=00432554 -00432000 =554

    • 修复重定位表、修复资源、修复VMOEP等。

    2.ASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的。

    • CFF Explorer查看PE头控制ASLR的位置:Nt Headers->File Header->Characteristics->Click here->Relocaation info stripped from file

    • LordPE查看PE头控制ASLR的位置:特征值->...->重定位已分离

    3.win7无法运行由于ASLR(PE位置)和重定位的原因

    • 去掉ASLR---【ASLR关闭工具】OD载入每次入口地址不一样:ttp://www.52pojie.cn/thread-377450-1-1.html

    • 不去掉ASLR---修复重定位

    4.作业解答:
    1、问脱壳插件有异常,提示内存无法读取。
    解答:不要用win7/win8脱壳,换论坛xp虚拟机,原因是ASLR基地址随机化脱壳插件获取的地址不对。
    2、问为什么脱壳地址和视频里的地址不同。
    解答:如上一问题,不要用win7/win8脱壳,换论坛xp虚拟机,原因是ASLR基地址随机化导致地址不同。
    3、问异常法脱壳去掉忽略异常后怎么无法暂停。
    解答:OD插件--StrongOD--Options--Skip Some Exceptions选项取消,重启OD再试试。
    4、问 xp 上脱完壳到win7/win8系统上就无法运行了。
    解答:原因一:IAT未完全修复成功导致的,重新修复,不要用脱壳插件,使用LordPE来dump再用ImpREC(最好用Scylla修复,ImpREC对一些新系统的API支持不好)来修复IAT(千万不要使用OllyDump插件来脱壳,老东西bug多,脱完无法运行不计其数)。原因二:由于ASLR和重定位表问题,详见:http://www.52pojie.cn/thread-382462-1-1.html
    5、问脱完壳用Exenfo PE查壳显示“Unknown Packer-Protector”未知。
    解答:知道脱完就好了,脱完的vs2008的程序Exenfo PE没能识别出来,但根据它的提示使用它的插件“advance scan”是可以扫描出来的,可以试一下。
    6、问如何知道是否脱壳成功。
    解答:简单的说脱完壳后可以正常运行,OEP入口代码为无壳代码特征(我第一课里说了什么是无壳程序),IAT解密完、资源没有被压缩即可。
    7、问如何完美脱壳和处理重定位。
    解答:转了一些fly的帖子,大家可以参考:
    http://www.52pojie.cn/thread-382879-1-1.html
    http://www.52pojie.cn/thread-382872-1-1.html
    http://www.52pojie.cn/thread-382870-1-1.html

    8、关于ximo脱壳教程和论坛虚拟机机中OD使用可能遇到的问题。
    解答:OD不要直接在虚拟机的共享文件夹加载文件,请把文件复制到虚拟机磁盘上再进行调试。

    课件工具

    1. 吾爱破解专用版OllyDbghttp://www.52pojie.cn/thread-350397-1-1.html

    2. 论坛专用破解虚拟机http://www.52pojie.cn/thread-341238-1-1.html

    3. 其他工具见爱盘:http://down.52pojie.cn/Tools/

    课件资源

    360云盘下载:
    https://yunpan.360.cn/surl_y3GCKpiI2fX 提取码:7693
    百度网盘下载:
    链接: https://pan.baidu.com/s/1z9WQeYgUGxcurVD2lKfNeg提取码: e2su

    爱盘下载:
    http://down.52pojie.cn/吾爱破解视频教程/吾爱破解论坛官方入门教学培训第一期/

    解压密码:
    www.52pojie.cn

    本文来自博客园,作者:Theseus‘Ship,转载请注明原文链接:https://www.cnblogs.com/yongchao/p/15753577.html

  • 相关阅读:
    【洛谷P3649】回文串
    【CH2401】送礼物
    Python 函数
    Python 文件操作
    JS的DOM和BOM
    JavaScript (内置对象及方法)
    JavaScript 基础(数据类型、函数、流程控制、对象)
    Python基础数据类型(数字、字符串、布尔、列表、元组、字典、集合等)
    MySQL(二)
    数据备份 及 Python 操作 Mysql
  • 原文地址:https://www.cnblogs.com/yongchao/p/15753577.html
Copyright © 2011-2022 走看看