用AheadLib进行简单的DLL注入

本文介绍了如何使用 AheadLib 进行 DLL 注入。首先创建并编译了一个实现简单加法功能的 DLL 文件,然后使用 AheadLib 反编译并重新编译 DLL,通过替换原 DLL 实现了注入。在32位或64位系统中,将 DLL 放入相应系统目录后,成功实现了 DLL 劫持。
摘要由CSDN通过智能技术生成

参考链接:http://www.voidcn.com/article/p-hwvwbvwu-xz.html

1、首先编写要注入的DLL文件:dllTest_dll.dll
只进行两个数的简单相加

#include "dllTest_dll.h"

int add(int x,int y)
{
   
	return x+y;
}

DLL的头文件dllTest_dll.h

#ifndef LIB_H
#define LIB_H

// 这种声明方式是强制用c语言方式进行修饰,且用C的默认约定__cdecl方式。
// 这种方式编译产生的DLL中有一个导出函数:add,不加任何修饰。
extern "C" int __declspec(dllexport)add(int x,int y);
#endif

2、DLL文件的调用文件dllTest.cpp

// dllTest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "stdio.h"
#include "windows.h"

typedef int (*lpAddFun)(int,int); // 函数声明 lpAddFun是一个指向函数的指针,该函数有两个参数都是int类型,函数的返回值也是int类型
// int *function(int,int)表示函数的两个参数都是int类型,函数的返回值是指向Int类型的指针;

int _tmain(int argc, _TCHAR* argv[])
{
   
	HINSTANCE hDll; // DLL句柄
	lpAddFun addFun; // 函数指针
	//TCHAR tzPath[MAX_PATH];

	hDll = LoadLibraryW(L"dllTest_dll.dll");// 如果不加L会报错 “LoadLibraryW”: 不能将参数 1 从“const char [16]”转换为“LPCWSTR”
                                            //与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
	if(hDll != NULL)
	{
   
		addFun = (lpAddFun)GetProcAddress(hDll,"a
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、简介   AheadLib 是用来生成一个特洛伊DLL的工具,用于分析DLL中的函数参数调用(比如记录Socket send了什么等等)、更改函数功能(随心所欲了:)、更改界面功能(比如在Hook里面生成一个按钮,截获事件等等)。 二、使用   1.用 AheadLib 打开要模拟的 DLL,生成一个 CPP 文件。   2.用 Visual Studio 6.0/.NET 建立一个 DLL 工程,把这个 CPP 文件加入到项目中。   3.使用 Release 方式编译,生成的 DLL 将和原来的 DLL 具有一模一样的导出函数,并且能顺利把这些函数转发到原来的函数中。   4.AheadLib 还可以生成 Hook 代码,用于截取当前进程的所有消息,这样就可以随心所欲地处理各种消息了 (修改第三方程序界面功能的好助手)。 三、备注   1.如果导出函数过多,在 Visual Studio 6.0 中,如果出现编译错误,请在项目属性关闭与编译头功能。   2.如果是 C++ 、C __stdcall、C __fastcall 的方式导出的话,生成的函数声明将会还原成原代码级别(可能需要修改才能编译,比如导出C++类的情况)。此时使用 __declspec(dllexport) 导出 ——不能指定导出序号。   3.如果是 NONAME 或者 C _CDECL 方式导出(比如 DEF 导出,大多数Windows DLL都是这种情况,比如WS2_32等等),则使用#pragma comment(linker, "/EXPORT:...)导出,且指定导出序号。   4.如果系统中没有 DbgHelp.dll,将无法识别 C++ 模式的导出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值