zoukankan      html  css  js  c++  java
  • 分析傀儡进程

    样本注入的过程:是先创建进程,获取句柄,在新进程内获取内存,再WriteProcessMemory,再SetThreadContext,再ResumeThread,先WriteProcessMemory,再SetThreadContext。
    那也就是说,如果要改写到新进程的数据,那肯定要在WriteProcessMemory之前所以,改的时机就确定了,就是WriteProcessMemory之前。那要改哪里。你刚已经通过SetThreadContext获取到了新的eip地址
          

    SetThreadContext函数,用来为指定线程设置context
    BOOL WINAPI SetThreadContext(
      _In_       HANDLE  hThread,  //线程句柄
      _In_ const CONTEXT *lpContext  //指定线程的context结构体
    );
    typedef struct _CONTEXT{
    DWORD ContextFlags;
    DWORD Dr0;
    DWORD Dr1;
    DWORD Dr2;
    DWORD Dr3;
    DWORD Dr6;
    DWORD Dr7;
    FLOATING_SAVE_AREA FloatSave;
    DWORD SegGs;
    DWORD SegFs;
    DWORD SegEs;
    DWORD SegDs;
    DWORD Edi;
    DWORD Esi;
    DWORD Ebx;
    DWORD Edx;
    DWORD Ecx;
    DWORD Eax;
    DWORD Ebp;
    DWORD Eip;           //设置新线程运行的入口点  偏移为0xB4
    DWORD SegCs;
    DWORD EFlags;
    DWORD Esp;
    DWORD SegSs;
    } CONTEXT;
    下断SetThreadContext,找到context结构体中的成员eip

    接下来下断WriteProcessMemory
     
    Address  0x00400000 写入的目的地址是 
    目的地址就是0x004B5780-0x00400000+0x00F80028 ==0x010357A8 在数据窗口中找到数据位置。然后将入口处改成CC
     

    OD调试时,需要设置为实时调试设置设置 Jiack为实时调试器下完WriteProcessMemory后,改完数据,直接F9跑起来

    那下断点WriteProcessMemory






    有一个是源地址,有一个是目的地址Adress 这个是0x10000000,是目的1009c314 - 10000000 + 0x7fe30010改的地方是0x7fe30010 + 9c314先把od,设置为默认调试器
    选项   实时调试设置设置 Jiack为实时调试器下完WriteProcessMemory后,改完数据,直接F9跑起来




  • 相关阅读:
    最好用的html复制插件——Clipboard.js
    最好用的轮播插件——Swiper.js
    媒体查询
    函数防抖和节流
    JQ增删改查localStorage实现搜索历史功能
    vscode如何设置html模板
    js中innerHTML、outerHTML、innerText、outerText的区别
    JS实现一个简单的网页钟表
    Sql Server 2014完全卸载
    照片尺寸大小怎样换算?
  • 原文地址:https://www.cnblogs.com/kangxiaopao/p/7275662.html
Copyright © 2011-2022 走看看