zoukankan      html  css  js  c++  java
  • 内嵌补丁练习二

    0x00 前言

     对于上篇所讲的那个练习,PE文件属于运行时解压缩文件,而且文件包含校验和检验,如果直接修改代码可能得花点功夫了。对于这种情况我们可以使用内嵌补丁轻松解决。

     

    由上图我们知道要进行运行内嵌补丁,先得找到外壳程序跳往OEP的关键跳转。上篇我们已经知道4018083处为跳往OEP的关键跳。

    0x01  内嵌补丁编写

    1. 首先我们要确定补丁位置。一般而言有三种方式。文件空白区,扩展到最后字节,添加新节区。我们先用PEviewer查看.text节区情况。有下图:

     

    上图我们知道text节区在文件中的大小为400h,而映射到内存的实际大小才为280h280h-400h的地方都是空白。我们就将补丁嵌入此区域。

     2.使用lordPE查看imagebasetext区块的起始地址。如下图:

     

     

    由上图可知text映射到内存地址401280处为空白区域。跳转至该处得到下图:

     3.下面编写内嵌补丁。

     

    上图红框标注的地方就是我们今天要替换掉的内容,我们先找到字符串位置。这是个messageBox我们直接运行至OEP处查看传递的参数。如下图:

     DialogBoxParamA函数的原型如下:

    INT_PTR DialogBoxParamA(

      HINSTANCE hInstance,

      LPCSTR    lpTemplateName,

      HWND      hWndParent,

      DLGPROC   lpDialogFunc,

      LPARAM    dwInitParam

    );其中lpDialogFunc用来指出DialogBoxParamA的显示地址,这个就是显示的内容的关键参数。由于汇编的入参是和从右到左,我们可以从上图知道传递的参数是4010F5。我们跳转至该区域得到稍微往下翻就能的到下图:

    由上图我们得到这几个字符串的地址分别为。40110A401141401123。我们等下就是要用自己的字符串替换掉这几个。

    4.再次跳往401280处编写补丁得到下图:

     

    字符串修改完毕折后需要跳转至OEP处。但是还需修改一处:401083,这个地址本来是跳转至OEP的,但是我们现在要让他跳往我们的补丁位置。如下图:

     

     5.以为大功告成了吗?直接这样保存的话肯定无法运行。我们先保存下来运行以下试试。

    保存之后果然无法运行!那么问题出在哪里呢?接下来才是本次补丁最为关键的地方。我们都是知道地址为401007后面的大小为7F代码和004010F5下面的大小为154的区域都是加密的,其中我们的关键跳转401083就在这块被加密过一次的大小为7F的区域内!!假如我们直接把代码修改成jmp 401080,其机器码为E9 81 01,保存后这句代码运行时再被xor 7解密就变成了ee ff 06,解密后在运行这句代码肯定无法运行!所以我们应该现在hexworkshop中把代码修改为ee ff 06,这样运行时经过解密操作代码恢复原状了,这样才能正常运行。我们用hexworshop打开保存后的文件,找到该处的机器码,修改为ee ff 06,如下图:

     

    点击保存,再点击原程序,正常运行!

     

  • 相关阅读:
    49. 字母异位词分组
    73. 矩阵置零
    Razor语法问题(foreach里面嵌套if)
    多线程问题
    Get json formatted string from web by sending HttpWebRequest and then deserialize it to get needed data
    How to execute tons of tasks parallelly with TPL method?
    How to sort the dictionary by the value field
    How to customize the console applicaton
    What is the difference for delete/truncate/drop
    How to call C/C++ sytle function from C# solution?
  • 原文地址:https://www.cnblogs.com/2f28/p/9941523.html
Copyright © 2011-2022 走看看