首页 > 其他分享 >挂接API

挂接API

时间:2023-09-19 10:33:26浏览次数:31  
标签:挂接 MessageBox int LPCSTR API pbModule PIMAGE PVOID


// hook.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <windows.h>
PVOID HookAPI(LPBYTE pbModule,PCSTR pszName,PVOID pvOrg,PVOID pvNew)
{
	PIMAGE_THUNK_DATA r;
	PIMAGE_NT_HEADERS p;
	PIMAGE_IMPORT_DESCRIPTOR q;
	p=(PIMAGE_NT_HEADERS)(pbModule+(((IMAGE_DOS_HEADER*)(pbModule))->e_lfanew));
	q=(PIMAGE_IMPORT_DESCRIPTOR)(pbModule+p->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
	for (;q->Name;q++)
	{
		if (lstrcmpi(pszName,(LPCSTR)(pbModule+q->Name))==0)
		{
			for (r=(PIMAGE_THUNK_DATA)(pbModule+q->FirstThunk);r->u1.Function;++r)
			{
				if ((PVOID)r->u1.Function==pvOrg)
				{
					WriteProcessMemory(GetCurrentProcess(),&r->u1.Function,&pvNew,sizeof(PVOID),NULL);
					return pvOrg;
				}
			}
		}
	}
	return NULL;
}
typedef int (WINAPI *PFMessageBox)(HWND,LPCSTR,LPCSTR,UINT);
PFMessageBox g_addr=MessageBox;
int WINAPI MyMessageBox(HWND hwnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType)
{
	return g_addr(hwnd,"123","",uType);
}
int main(int argc, char* argv[])
{
	MessageBox(0,0,0,0);
	HookAPI((LPBYTE)GetModuleHandle(NULL),"user32.dll",MessageBox,MyMessageBox);
	MessageBox(0,0,0,0);
	return 0;
}

标签:挂接,MessageBox,int,LPCSTR,API,pbModule,PIMAGE,PVOID
From: https://blog.51cto.com/u_15487030/7522600

相关文章

  • arcgis api for javascript 4.x, 删除绘制的点、线、面
    1、在视图mapView上添加的点线面//删除所有mapView.graphics.removeAll();//删除一个constpointGraphic=newGraphic({geometry,symbol})mapView.graphics.remove(pointGraphic);//删除多个mapView.graphics.removeMany([pointGraphic,polylineGraphic]);2、G......
  • System API——arraycopy
    System.arraycopy(参数1,参数2,参数3,参数4,参数5)参数1:数据源,要拷贝的数据从哪个数组来参数2:从数据源数组中的第几个索引开始拷贝参数3:目的地,要把数据拷贝到哪个数组中参数4:目的地数组的索引参数5:拷贝的个数......
  • 快速了解Apipost
    随着数字化转型的加速,API(应用程序接口)已经成为企业间沟通和数据交换的关键。而在API开发和管理过程中,API文档、调试、Mock和测试的协作显得尤为重要。Apipost正是这样一款一体化协作平台,旨在解决这些问题,提高API开发效率和质量。Apipost提供API文档管理功能,让后端开发人员可以在开......
  • springboot整合elasticsearch-RestHighLevelClient api查询
    1.依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency><dependency><groupId>org.elasticsearch.client</groupId......
  • 【接口自动化测试】Eolink Apikit 接口文档生成与导出
    在API研发管理产品中,几乎所有的协作工作都是围绕着API文档进行的。采用文档驱动的协作模式会比先开发、后维护文档的方式更好,团队协作效率和产品质量都能得到提高。基于文档来进行工作,使用文档驱动方式可以降低大量无意义的沟通成本。创建了API文档之后,可以随时查看API......
  • API数据接口在电子商务中的应用
    一、引言随着互联网和移动设备的普及,电子商务(电商)已经成为人们日常生活中不可或缺的一部分。无论是购买日常生活用品,还是享受便捷的服务,电商都扮演着重要的角色。而在这个快速发展的领域中,API(应用程序接口)数据接口扮演着一个关键的角色。它们帮助各个系统之间进行沟通,从而实现各种......
  • 快学会这个技能-.NET API拦截技法
    大家好,我是沙漠尽头的狼。本文先抛出以下问题,请在文中寻找答案,可在评论区回答:什么是API拦截?一个方法被很多地方调用,怎么在不修改这个方法源码情况下,记录这个方法调用的前后时间?同2,不修改源码的情况下,怎么对方法的参数进行校正(篡改)?同3,不修改源码的情况下,怎么对方法的返回值进行伪造?......
  • API-T00L v1.2 api利用工具
    API-T00Lv1.2https://github.com/pykiller/API-T00L期望是针对互联网各大API泄露的利用工具,包含钉钉、企业微信、飞书等。特别鸣谢chatgpt,代码好帮手。目前界面长这样,布局拉胯,能用就行。食用方法钉钉1、肯定你得有ak、as。填进去获取token2、建用户最简单的做法,直接填......
  • Cyber-时间API
     /*日志头文件#include"cyber/common/log.h"#include"cyber/init.h"在#include"cyber/cyber.h"中已经包含了上述两个头文件*///日志初始化apollo::cyber::Init(argv[0]);//日志APIADEBUG......
  • Cyber-时间相关API
     /*时间相关APITime是一个用来管理时间的类;可用于当前时间的获取、耗时计算、时间转换等Duration相关接口,用于表示时间间隔,可以按照指定的纳秒或者秒进行初始化Rate接口一般用于休眠操作(会自动将频率换算成休眠时间)Timer可用于创建定......