游戏安全实验室-游戏逆向-游戏辅助开发

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1567|回复: 5

二进制手动注入messagebox

[复制链接]
匿名  发表于 2023-6-8 01:39:12 |阅读模式
本人小白一枚,在看到滴水的在空白区注入messagebox这一节时遇到问题,首先在滴水中注入的方式是硬编码格式为6A 00(push 0) 6A 00 6A 00 6A 00 E8(call) + 跳转的硬编码 E9(jmp) + 原程序入口点的硬编码。我首先遇到两个问题,第一是我使用vs2022编写的程序它的汇编没有像滴水课中那样是push,而是用四个寄存器使用xor指令来得到参数0再调用messagebox,那该如何注入呢?第二个问题,我通过动态调试器(vs中自带的和x64dbg)发现程序加载进内存的地址特别大(类似07FF65A0F0150h这种),那pe头中的imagebase失效了我在文件中手动注入怎么知道messagebox的具体位置以及在内存中entrypoint的真正位置呢?这两点很困扰我,在网上搜也是用在滴水课中一样的讲法,一直没找到解决的,所以再次恳请各位大佬指导一下,谢谢啦。

#include <stdio.h>

int  main()
{
        printf("HEllo world\n");
        return 0;
}
我就是想在这个很简单的helloworld中注入一个messagebox。
回复

使用道具

匿名  发表于 2023-6-8 08:39:33
1.64位传参和32位不同,64位的是通过寄存器传的,所以你没看到push而是mov 2.因为你是64位的程序所以地址特别大
回复

使用道具

匿名  发表于 2023-6-8 18:01:11
@admin ,感谢大佬,但我还有点问题,我在使用petools查看这种程序发现imagebase的大小为400000,但在实际内存中的位置那么大,那imagebase就没有参考意义了。并且每次运行同一程序在内存的位置也不一定一样,那请问程序入口点的内存地址和messagebox在运行时的内存地址该如何寻找呢?
回复

使用道具

匿名  发表于 2023-6-8 20:38:31
image只是模块基址而已啊,是rva 定位messagebox可以自己写个程序动态获取,或者特征码
回复

使用道具

匿名  发表于 2023-6-8 20:39:18
建议看看windowspe 权威指南
回复

使用道具

匿名  发表于 2023-6-9 00:41:48
@admin ,好,谢谢大佬
回复

使用道具

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|游戏安全实验室

GMT+8, 2024-11-21 17:48 , Processed in 0.059182 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表