在PE文件中简单注入代码,实现在启动前弹窗
获得的新知识:
1、kernel32.dll,user32.dll,ntdll.dll等一些dll在同一个PC环境下的映射到虚拟内存基址是一样的。
2、在win8以上系统上,更改PE文件的入口点要大于SizeOfHeaders(在可选文件头中),否则会报错无法运行。

1、实现原理
PE可选文件头有一个AddressOfEntryPoint,更改这个值指向自己代码,执行完自己代码再跳转到原来入口点。
2、实验过程
1、字节的代码
shellcode: 6A 00 6A 00 6A 00 E8 __ __ __ __ E9 __ __ __ ___
调用messagebox过程,压栈调用

这里用了IAT表,为了简单起见直接使用user32.dll中messagebox的地址
e8指令是call指令,后面要补充相对messagbox的地址,e9是jmp指令,要补充相对入口点地址。

将代码注入这个程序
用x32dbg查messagebox地址是0x76D160660。程序入口点为0x00401140。shellcode入口点设置为0x00401030



用wenhex写入shellcode

再把程序入口点修改了

最后,完美运行

在PE文件中简单注入代码,实现在启动前弹窗的更多相关文章
- 向PE文件中空白处添加代码
// mem.cpp : 定义控制台应用程序的入口点. //PE文件从文件加载到内存,再从内存读取,然后存盘到文件 #include "stdafx.h" #include < ...
- PE知识复习之PE文件空白区添加代码
PE知识复习之PE文件空白区添加代码 一丶简介 根据上面所讲PE知识.我们已经可以实现我们的一点手段了.比如PE的入口点位置.改为我们的入口位置.并且填写我们的代码.这个就是空白区添加代码. 我们也可 ...
- 如何在 asp.net core 3.x 的 startup.cs 文件中获取注入的服务
一.前言 从 18 年开始接触 .NET Core 开始,在私底下.工作中也开始慢慢从传统的 mvc 前后端一把梭,开始转向 web api + vue,之前自己有个半成品的 asp.net core ...
- PE文件中的输入表
前言 PE文件中的输入表含有三个重要结构IID,IDT,IAT.PE文件为需要加载的DLL文件创建一个IID结构,一个DLL与一个IID对应.IDT是输入名称表,IAT输入地址表,在没有绑定输入的情况 ...
- 带你开发一款给Apk中自动注入代码工具icodetools(完善篇)【申明:来源于网络】
带你开发一款给Apk中自动注入代码工具icodetools(完善篇)[申明:来源于网络] 带你开发一款给Apk中自动注入代码工具icodetools(完善篇):http://blog.csdn.net ...
- 在.vue文件中让html代码自动补全的方法(支持vscode)
在.vue文件中让html代码自动补全的方法(支持vscode) https://blog.csdn.net/qq_36529459/article/details/79196763 "fi ...
- 向PE文件中添加一个Section
背景 之前说过直接向类HelloWorld.exe的可执行文件添加一个MessageBox弹窗, 但有时候, 需要添加的内容太多了, 因为数据与代码一起插入, 以至于可执行文件本身没有足够的空闲空间存 ...
- c++文件中引用C代码
下面提供一个比较完整的示例程序,一共有四个文件:main.cpp.test.c.test.h.test.hpp main.cpp #include "test.hpp" int m ...
- java简单统计.java文件中的有效代码行,空行,注释行
package regxdemo; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundExc ...
随机推荐
- 没错,请求DNS服务器还可以使用UDP协议
目录 简介 搭建netty客户端 在netty中发送DNS查询请求 DNS消息的处理 总结 简介 之前我们讲到了如何在netty中构建client向DNS服务器进行域名解析请求.使用的是最常见的TCP ...
- WSL2安装Ubuntu20.04
前言:听说WSL2需要Window版本在1904以上(我的window版本是1909,所以未能验证真实性) 启用WSL 控制面板 → 程序 → 程序和功能 → 启用或关闭Windows功能 勾选 适用 ...
- 在CDH webUI中部署HDFS HA
一.点击hdfs按钮进入hdfs配置界面 二.开始部署hdfs ha 三.分配角色 设置存储路径,这个可以自定义,我还在学习阶段我就默认了,之前改过,没起来,默认就好了:
- 自动提交本地git仓库脚本
#! /bin/bash git_user_name=`git config user.name` git_user_mail=`git config user.email` branch_name= ...
- 二手车价格预测 | 构建AI模型并部署Web应用 ⛵
作者:韩信子@ShowMeAI 数据分析实战系列:https://www.showmeai.tech/tutorials/40 机器学习实战系列:https://www.showmeai.tech/t ...
- PerfView专题 (第三篇):如何寻找 C# 中的 VirtualAlloc 内存泄漏
一:背景 上一篇我们聊到了如何用 PerfView 去侦察 NTHeap 的内存泄漏,这种内存泄漏往往是用 C 的 malloc 或者 C++ 的 new 分配而不释放所造成的,这一篇我们来聊一下由 ...
- django中视图函数的FBV和CBV
1.什么是FBV和CBV FBV是指视图函数以普通函数的形式:CBV是指视图函数以类的方式. 2.普通FBV形式 def index(request): return HttpResponse('in ...
- 图解OSI七层模型
七层模型,亦称OSI(Open System Interconnection)参考模型,是参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系.它是一个七层的.抽象的模型体 ...
- ORA-01950: no privileges on tablespace 'USERS'-- 解决办法
ORA-01950: no privileges on tablespace 'USERS' 原因: 在表空间 "USERS" 无权限 解决办法: 用户登录,查看当前用户所 ...
- [RootersCTF2019]I_<3_Flask-1|SSTI注入
1.打开之后很明显的提示flask框架,但是未提供参数,在源代码中发现了一个git地址,打开之后也是没有啥用,结果如下: 2.这里我们首先需要爆破出来参数进行信息的传递,就需要使用Arjun这一款工具 ...