• 第14,15章:Runtime-Packer


    对UPX压缩的Notepad.exe程序进行分析.

     

    如图分析,第一个节区UPX0,可以看出,VirtualSize的值为10000H,而SizeOfRawData0.

    第一个节区内目前是没有任何数据的,但是虚拟地址的大小却为10000H,可以推测,它后面会放入数据---即解压后的数据.

    跟踪程序执行的流程,可以发现其一直在一个大循环中.

    程序首先获取到第二节区的首地址,然后逐渐将数据填入到第一节区,如果没有理解错的话,此压缩算法是:

    将重复的信息的位置存储起来,并且将没有重复的单独的信息和他们放在一起,构成了密文.

    解密时先将前面的一部分信息释放出来,然后循环释放即可.

    继续跟踪,在执行完循环后,会循环的访问INT,并且载入函数:

    有意思的是ordinal值全为1.并且GetProcAddress()也确实用的是函数名称作为参数.

    执行完循环之后:

    前面的pushad和这里的popad相对应:

    然后就到了正常的程序中:

    和正常的notepad.exe程序对比,是一样的:

  • 相关阅读:
    树的定义与存储
    软件测试概论二
    软件测试概论
    抽象数据类型
    java编程总结01---20190214
    java 按行读取本文文件并存放到mongodb中
    刷题感悟
    刷题感悟- Binary Tree Path Sum
    java io与nio
    java IO 学习笔记
  • 原文地址:https://www.cnblogs.com/Rev-omi/p/13203062.html
Copyright © 2020-2023  润新知