恶意代码实验2

1. 使hello25.exe弹出的对话框内容变为自己的学号

  • hello25.exe运行后会弹出两个对话框,如下图:
    在这里插入图片描述
    在这里插入图片描述

  • 思路:显示的内容应该是以字符串的形式存储在临时变量中,临时变量通常存储在.data段,找到节表中.data段,读出在内存中节区的RVA地址(12H,4字节)或者在文件中的偏移量(20H)
    在这里插入图片描述
    结合ImageBase字段值为40000,.data段在内存中的403000位置
    .data字段在文件中的800位置

下面以修改第一个对话框中内容为例:

  1. 找到需要修改内容所在地址
    在这里插入图片描述
  2. 修改数据
  • ollydbg中不能对文件直接进行修改,我们确定好要修改内容的位置后,回到winhex中进行修改
    • ollydbg中确认要修改的数据为5045C8……
      在这里插入图片描述

    • 回到winhex,找到相同的数据并修改
      在这里插入图片描述

      这里可能会遇到有这样的提示:
      在这里插入图片描述
      出现这个问题的同学应该是直接运行了老师发的压缩包里的winhex.exe文件,它没有办法帮你修改文件,要想修改还是得自己装一下。

  1. 另存为文件hello_modified.exe并试运行
    在这里插入图片描述

2. 使其文件中不存在MessageBoxA这一函数名,但仍能正常运行且功能不变

  • 思路:在hello25中MessageBoxA以名字方式调用,若想要达到文件中不存在MessageBoxA这一函数名,但仍能正常运行且功能不变,一是要修改导入表中关于MessageBoxA的引入名字表,二是要修改MessageBoxA的调用方式为以序号方式调用。

2.1 找到导入表中的引入名字表

  1. 找到导入表的桥1,找到其指向的存储地址中的函数名MessageBoxA
    在这里插入图片描述
  2. 回到winhex中,按照偏移量相同的原则找到数据位置并修改(208C对应68C)并修改
    在这里插入图片描述

2.2 修改MessageBoxA的调用方式为以序号方式调用

  1. 将user32.dll导入dependency walker中可以查到MessageBoxA的序号为0x864
    在这里插入图片描述

  2. 找到引入名字表(图中对应402058处,值为208C)
    在这里插入图片描述

  3. 回到winhex中修改,引入名字表在文件中的地址对应为658,修改为0x80000864
    最高位为1:表示函数以序号方式调入
    在这里插入图片描述

  4. 另存为文件hello25_modified2.exe并运行
    在这里插入图片描述

3. 使其只弹出第一或第二个对话框

  • 这里我做的是只弹出第一个对话框
  1. 先打开ollydbg分析一下,可以从反汇编的窗口看到,每调用一次MessageBoxA,就会弹出一次对话框
    EIP+下一条指令地址=所调用函数入口地址
    如图0x00000014+0x0040102C=0x00401040
    当调用ExitProcess程序会退出,时所以我们将EIP中的值修改,使得所调用的函数入口地址变为ExitProcess即可
    0x00000008+0x0040102C=0x00401034
    所以将EIP的值改为0x00000008
    在这里插入图片描述
  2. 回到winhex进行修改
    EIP的地址为401027,对应在文件中的地址为427
    修改前:
    在这里插入图片描述
    修改后:
    在这里插入图片描述
  3. 另存为文件hello25_modified3.exe并运行,只弹出了第一个对话框
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值