获得的新知识:

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文件中简单注入代码,实现在启动前弹窗的更多相关文章

  1. 向PE文件中空白处添加代码

    // mem.cpp : 定义控制台应用程序的入口点. //PE文件从文件加载到内存,再从内存读取,然后存盘到文件 #include "stdafx.h" #include < ...

  2. PE知识复习之PE文件空白区添加代码

    PE知识复习之PE文件空白区添加代码 一丶简介 根据上面所讲PE知识.我们已经可以实现我们的一点手段了.比如PE的入口点位置.改为我们的入口位置.并且填写我们的代码.这个就是空白区添加代码. 我们也可 ...

  3. 如何在 asp.net core 3.x 的 startup.cs 文件中获取注入的服务

    一.前言 从 18 年开始接触 .NET Core 开始,在私底下.工作中也开始慢慢从传统的 mvc 前后端一把梭,开始转向 web api + vue,之前自己有个半成品的 asp.net core ...

  4. PE文件中的输入表

    前言 PE文件中的输入表含有三个重要结构IID,IDT,IAT.PE文件为需要加载的DLL文件创建一个IID结构,一个DLL与一个IID对应.IDT是输入名称表,IAT输入地址表,在没有绑定输入的情况 ...

  5. 带你开发一款给Apk中自动注入代码工具icodetools(完善篇)【申明:来源于网络】

    带你开发一款给Apk中自动注入代码工具icodetools(完善篇)[申明:来源于网络] 带你开发一款给Apk中自动注入代码工具icodetools(完善篇):http://blog.csdn.net ...

  6. 在.vue文件中让html代码自动补全的方法(支持vscode)

    在.vue文件中让html代码自动补全的方法(支持vscode) https://blog.csdn.net/qq_36529459/article/details/79196763 "fi ...

  7. 向PE文件中添加一个Section

    背景 之前说过直接向类HelloWorld.exe的可执行文件添加一个MessageBox弹窗, 但有时候, 需要添加的内容太多了, 因为数据与代码一起插入, 以至于可执行文件本身没有足够的空闲空间存 ...

  8. c++文件中引用C代码

    下面提供一个比较完整的示例程序,一共有四个文件:main.cpp.test.c.test.h.test.hpp main.cpp #include "test.hpp" int m ...

  9. java简单统计.java文件中的有效代码行,空行,注释行

    package regxdemo; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundExc ...

随机推荐

  1. ASP.NET Core 6.0 基于模型验证的数据验证

    1 前言 在程序中,需要进行数据验证的场景经常存在,且数据验证是有必要的.前端进行数据验证,主要是为了减少服务器请求压力,和提高用户体验:后端进行数据验证,主要是为了保证数据的正确性,保证系统的健壮性 ...

  2. Junit使用步骤和junit_@Before&@After

    测试: 1.定义一个测试类(测试用例) 建议: 测试类名:被测试的类型Test CalculatorTest 包名:xxx.xxx.xx.test com.li.Test 2.定义测试方法:可以独立运 ...

  3. PDF 拆分/合并

    不会真的有人会去下载那些广告免费,实则要收会员费的黑心软件来进行PDF的拆分合并吧??? 在下载两个均不能免费实现PDF自由拆分.合并,以及PDF打印方式会增加文件大小的情况下,一个合格的程序员肯定不 ...

  4. javascript引用奇趣

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. javascript原生style属性分析

    1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="U ...

  6. top、postop、scrolltop、offsetTop、scrollHeight、offsetHeight、clientHeight

    1.top 此属性仅仅在对象的定位(position)属性被设置时可用.否则,此属性设置会被忽略 2.posTop posTop的数值其实和top是一样的,但区别在于,top固定了元素单位为px,而p ...

  7. appache ab测试高并发

    ab使用范例: 要执行 1000 次的 connection, 20 次的 concurrent (并行, 同时): 语法: ab -n 1000 -c 20 http://localhost/ind ...

  8. Kettle需求场景复现

    前置说明 遍历文件夹下的文件,读取所有的sheet页(指定的sheet)落库 读取execl文件和csv文件,获得文件中sheet/csv数据,进行落库,并增加字段实现更新: 如果execl中存在两个 ...

  9. Point2和Point3类定义

    支持以下图中的运算 类声明: class Point2 { public: Point2(); ~Point2(); Point2(ldouble a); Point2(ldouble a, ldou ...

  10. Windows 查看端口占用并关闭

    在启动服务的时候,可能会遇到端口被占用的情况. 这时候就需要知道哪个服务占用了这个端口,并将其关闭. 然后再启动服务就不会存在端口占用了. 这里以 Tomcat 的默认端口 8080 为例. 打开命令 ...