hook recv的问题,dll注入

如题,myrecv中必须最后调用原recv才行,不然目标程序会崩溃;
int WINAPI MyRecv(SOCKET s, char* buf, int len, int flags)
{
int ret = pRecv(s,buf,len,flags);
......//我的操作代码
return ret;
}
这样写就崩溃了,但是
int WINAPI MyRecv(SOCKET s, char* buf, int len, int flags)
{
......//我的操作代码
return pRecv(s,buf,len,flags);
}
这样写又很正常;
请问是什么原因,怎么解决

3个回答

有没有高手帮忙看看啊

你后面的操作是不是影响了缓冲区

dinglinxiang
dinglinxiang 没有,只是读。。。或者我试过不相干的操作,比如说打开个文件,随便write的啥。。。反正中间有代码就崩溃
大约 4 年之前 回复

什么类型的Hook?

wuheng_1
wuheng_1 回复dinglinxiang: Detours里也有几种不同类型的,最好搞清楚。
大约 4 年之前 回复
dinglinxiang
dinglinxiang dll里面用得Detours库
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
hook WSARecv要注意的问题
如果直接在hook的函数中直接调用原始地址的话完全没有问题:int WSAAPI hooked_WSARecv_ws232(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_
通过Hook将DLL注入进程
首先,读这篇文章之前,默认已经掌握了进程地址空间,dll加载,windows Hook技术。 1. 为什么需要dll注入? 如果一个进程的程序是我们自己编写的,我们可以在程序中隐式或者显式地加载需要的dll,不需要dll注入。但是,当一个进程的程序不是我们编写的,而我们又需要该程序加载指定的dll,以便进行某些操作,这是就需要dll注入。 我们知道,dll可以被多个进程加载,当一个进程加载d
通过HOOK来注入DLL的一点心得!!!!!!
这段时间研究了一下注入技术,今天有空来写一下心得,以免以后忘记.用HOOK进行注入的思路主要如下:1.首先,写一个钩子,放在DLL中,然后,导出设置钩子的函数SetHook。2.在我的应用程序中,通过FindWindow来找出要注入的目标进程的ThreadId;3.在自己的程序中调用SetHook,传入ThreadId;4.在SetHook中设置目标进程的线程钩子,设置完成之后
Windows平台Ring3下DLL注入(HOOK)方法整理汇总
1.dll劫持,粗略整理了下,可以劫持的dll有(持续更新): lpk.dll、usp10.dll、msimg32.dll、midimap.dll、ksuser.dll、comres.dll、ddraw.dll 以lpk为例,在win7下由于lpk被加入KnownDLLs且该注册表值不可修改,使得lpk强制从系统目录加载, 不过可以将lpk.dll加入ExcludeFromK
[32/64]关于DLL注入与Hook(minihook)的简单介绍与使用
因为工作有时候用到,简单的介绍下相关的知识,都是很基础的,部分在网上收集整理。 0x01关于DLL注入 DLL注入技术的用途是很广泛的,这主要体现在: - 假如你要操纵的对象涉及的数据不在进程内; - 你想对目标进程中的函数进行拦截或者修改(API)。 - 你想编写一些函数用于增强或增加目标进程功能,比如可以给目标进程的某个窗口插入个消息循环增加其响应能力。(Mfc Windows程
HOOK登陆器来注入DLL -HOOK CreateProcessA
int __declspec(naked) __stdcall OrgCreateProcessA( LPCTSTR lpApplicationName, // name of executable module LPTSTR lpCommandLine, // command line string LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
注入Hook技术 -- DLL注入
 WinNT/Win2000/WinXP中的远线程技术之一--DLL注入    什么是远线程?我们知道用CreateThread可以在当前进程里建立一个线程,远线程与此类似,只不过是在其他进程中建立一个线程,用API函数CreateRemoteThread。这个远线程建立后就与建立它的进程无关了,而是进入了另外一个进程。举例说,进程A可以在进程B中建立一个远线程,这个远线程就是进程B中的线程了,而
非常简单的利用CreateProcess注入DLL的方法
TCHAR szDll[] = TEXT("d:\\test.dll"); STARTUPINFO si = {0}; PROCESS_INFORMATION pi = {0}; si.cb = sizeof(si); si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = SW_SHOW; TCHAR szCommandLine[MAX_PATH]
HOOK API——Windows核心编程 第22章 插入DLL和挂接API学习笔记
介绍:HOOK API是指截获特定进程或系统对某个API函数的调用,使得API的执行流程转向指定的代码。Windows下的应用程序都建立在API函数至上,所以截获API是一项相当有用的技术,它使得用户有机会干预其它应用程序的程序流程。最常用的一种挂钩API的方法是改变目标进程中调用API函数的代码,使得它们对API的调用变为对用户自定义函数的调用。HOOK API和HOOK技术完全不同。尽
HOOK API DLL 注入
<br />一、<br /> 序言对大多数的Windows开发者来说,如何在Win32系统中对API函数的调用进行拦截一直是项极富挑战性的课题,因为这将是对 你所掌握的计算机知识较为全面的考验,尤其是一些在如今使用RAD进行软件开发时并不常用的知识,这包括了操作系统原理、汇编语言甚至是关于机器指令代码 的(听上去真是有点恐怖,不过这是事实)。<br /> 当前广泛使用的Windows操作系统中,像Win 9x和Win NT/2K,都提供了一种比较稳健的机制来使得各个进程的内存地址空间之间是相互独
游戏注入教程(二)--HOOK注入
一、我们新建一个win32的dll,用来注入到游戏进程当中,注入成功的时候,会提示“注入成功”,而且提示注入到哪个窗口。 代码如下: // dllmain.cpp : 定义 DLL 应用程序的入口点。 #include "stdafx.h" BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) { DWORD dwCurProce
DLL注入--设置消息钩子
通过设置消息钩子,达到和dll注入相同的目的,但这个方法与其他DLL注入方法又不一样,它不会把自己的DLL加载到目标进程,所以也就实现不来DLL的隐藏,这样很容易被杀软KILL掉,亲测360秒杀,但实现简单还有有相当的应用场景,下面是一个通用的消息勾取主函数,它将关键的消息勾取函数SetWindowsHookEx函数放到了DLL当中,通过DLL调用来实现消息勾取,因为此逻辑相对简单,此处就不详细介绍
EasyHook远程进程注入并hook api的实现
介绍:HOOK API是指截获特定进程或系统对某个API函数的调用,使得API的执行流程转向指定的代码。Windows下的应用程序都建立在API函数至上,所以截获API是一项相当有用的技术,它使得用户有机会干预其它应用程序的程序流程。 最常用的一种挂钩API的方法是改变目标进程中调用API函数的代码,使得它们对API的调用变为对用户自定义函数的调用。 HOOK API和HOOK技术完全
利用HOOK技术实现DLL远程进程注入
转载:http://blog.sina.com.cn/s/blog_651cccf70100tkvb.html上一篇博文《HOOK钩子教程》中,作者较为详细地讲述了如何使用HOOK,并举了一个例子:用HOOK拦截WM_CLOSE消息一次。    实际上,HOOK有多种用法,本文讲述其中一种:利用HOOK技术实现DLL远程进程注入。    远程进程注入,按照作者的理解,就是让其他进程替你并运行DLL...
Microsoft Edge 拒绝未经过标记的DLL注入
原文网址: http://techreport.com/news/29337/microsoft-edge-update-protects-users-from-unsigned-dll-injection
键盘钩子函数注入dll
// dllmain.cpp : 定义 DLL 应用程序的入口点。 #include "stdafx.h" #include "stdio.h" #include "windows.h" HINSTANCE g_hInstance=NULL; HHOOK g_hHook = NULL; HWND g_hwnd = NULL; #define DEF_PROCESS_NAME "www.exe
HOOK钩子技术2 内联钩子Inline HOOK 通过DLL注入
dll注入很有意思,它最大的优势在于一旦这个dll被注入,就可以访问宿主程序整个内存空间。因此直接的操作dll是可以达到间接操作目标宿主程序的作用。这次继续使用CILHook类,不过这次是在目标程序内使用,而不是像1一样自己跟自己玩。
函数钩子-Dll注入
在应用层可以设置的钩子方法有许多种,其中经典的钩子是消息钩子,消息钩子分为两种,一种是系统级全局钩子,另外一种是线程级局部钩子,它们都是通过下面这一组函数来实现消息勾取,实现相对简单。设置钩子: SetWindowsHookEx 释放钩子: UnhookWindowsHookEx 继续钩子: CallNextHookEx 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上
奇技淫巧之调试被远程线程注入的DLL
远程线程注入, 这东西大家都懂的, 一般都被大家用来干些小小的坏事情,比如API Hook~~将DLL注入到其它进程并不是难事,问题是这个被注入的DLL不太好调试,调试DLL本来就是个比较头疼的问题,更何况是这种运行在其它进程空间的DLL, 被注入DLL的程序,不崩溃还好,崩溃了,要定位崩溃点,真是够麻烦的。 这几天,无意中发现了一个可以调试这种DLL的方法。
dll注入之SetWindowsHookEx 键盘消息钩子
1.背景知识 在实际应用中,键盘监控是一种很常见的技术,它包括按键的记录、按键的过滤、按键的修改(映射)等。比方说,我们想统计用户的击键情况,这个就是按键的记录;我们想屏蔽某些系统键(例如Alt键、Win键),这个是按键的过滤;我们想改变按键的值,例如按下A,出来的是Z,在例如按下A,出来按键的组合SDFG等(貌似这个在游戏中比较多,有些游戏的大绝招都比较难按,用这个一劳永逸),这个是按键的修改...
利用dll的hook悄悄监视某进程键盘输入并保存日志到log
利用dll的hook悄悄监视某进程键盘输入并保存日志到log,我测过非常有用,需要的赶紧下载了,还可以利用生成log做后序开发。
DLL注入技术之劫持进程创建注入
劫持进程创建注入原理是利用Windows系统中CreateProcess()这个API创建一个进程,并将第6个参数设为CREATE_SUSPENDED,进而创建一个挂起状态的进程,利用这个进程状态进行远程线程注入DLL,然后用ResumeThread()函数恢复进程。 1.创建挂起的进程     下面是创建一个挂起的计算器程序进程的主要代码: STARTUPI
线程注入、HOOK APIs(附VC6源码)
工作关系,想HOOK并修改一些API,使得不支持某些设备的第三方工具可以正常运行,因此花时间写了这么个工具。比如ReadFile时,某些设备不支持指定的缓存大小(如512KB),可以HOOK ReadFile,把缓存大小修改为更小,可能ReadFile就能正常工作,第三方工具也能正常使用。其实,只是想借工作这个契机,学习远程线程注入和HOOK API。工作上测试的设备和第三方工具运行在64位机
Windows 钩子,基本的dll注入
Windows操作系统是基于钩子完成的消息传递与用户交互,它以事件驱动的方式运行。每一个窗口都拥有自己的消息队列,当外部设备触发消息时,消息被发送到系统消息队列,再有操作系统安排将消息发送到特定进程上,这即是消息链。 所谓消息钩子,即是在系统将消息发送到用户程序前,提前截获此消息,并进行处理,也可以把它直接发送给用户程序。如: 当键盘(外部设备)发生键盘输入时,WM_KEYBOARD消息被添加
分享补丁模块(带源码)InlinePatch,Hook,内存DLL注入 都有哦
这个模块是我使用易语言时写补丁最常用的一个模块(当然很多也是抄的),一开始我觉得bug肯定会很多,放出去肯定又会坑很多人,后来我发现坑坑更健康,当你明白一个东西的优缺点之后,你才会更好的选择你所需要的。所以呢,现在模块开源了,希望对某些朋友有参考意义或者说使用价值吧。 声明:大家使用过程中发现任何问题都不要来问我,请自己想办法解决。我现在已经完全放弃易语言了,改用VC++了。
DLL注入notepad.exe
新建一个dll的工程,但是不要选择空项目,这样会自动生成一些简单的.h和.cpp文件,我这里自动生成了 stdafx.h、targetver.h、dllmain.cpp、simple_dll.cpp、stdafx.cpp,修改dllmain.cpp,修改为: // dllmain.cpp : 定义 DLL 应用程序的入口点。 #include "stdafx.h" #include
CreateProcess启动游戏注入DLL
先来段简单的,亲测成功!!! // test2.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using namespace std; int _tmain(int argc, _TCHAR* argv[]) { TCHAR szDll[] = TEXT("d:\\zlib1.dll");
注入(5)---导入表注入(HookINT)
导入表是WindowsPE文件中的一组数据结构,可执行程序(即EXE文件)被加载到地址空间后,每个导入的DLL模块都有一个对应的导入表,PE加载器会根据导入表来加载进程需要的其他DLL模块。 导入表的数据结构如下:typedef struct _IMAGE_IMPORT_DESCRIPTOR { union { DWORD Characteristics;
通过消息hook把dll注入到别的进程,再通过 该进程的IAT 挂接api
通过消息hook把dll注入到别的进程,再通过 该进程的IAT 挂接api。
更新了已经过测试-Windows下如何改写目标进程的窗口函数来注入DLL
    Windows的UI线程简单地说就是创建了窗口的线程,其创建的窗口都有窗口函数,在这里,我介绍一个改写UI线程窗口过程来注入DLL的方法:一:获取一个进程的窗口句柄,例如Notepad.exe进程的主窗口类名是 “NOTEPAD”      通过 FindWindow("NOTEPAD",NULL) 就可以得到运行的 Notepad.exe 的      主窗口的句柄设为 hWndNotepad, 通过 GetWindowThreadProcessId()      就可以获取到 创建该窗口的线程I
内存注入之IAT Hook和Inline Hook综合程序
内存注入综合程序 1) 进程列表获取 2) IAT表项获取 3) IAT Hook 4) Inline Hook
内核实现,超强注入RING3进程
内核监控进程启动,然后完成 DLL 注入,注入的DLL负责Ring3 HOOK 这样,注入和HOOK 分离操作简便。
Hook演示动态生成,全部HOOK事例用hook实现dll注入详解
Hook演示动态生成,全部HOOK事例用hook实现dll注入详解Hook演示动态生成,全部HOOK事例用hook实现dll注入详解
安装全局消息钩子实现dll窗体程序注入
安装全局消息钩子实现dll窗体程序注入
追逐自己的梦想----------辅助制作第八课:利用SetWindowsHook将进程注入游戏主线程来解决资源冲突的问题
本节课中,我们需要学习利用SetWindowsHook来注入主线程,然后利用多线程的原理来解决资源冲突的问题。 1.注入的原因:不同的线程在访问同一个共享数据的时候,如果没有同步处理,就会造成错误,从而导致程序崩溃,所以我们可以给自己编写的多线程,并且加上一些同步出来,然后再将dll注入到游戏的主线程中,就可以解决资源冲突的问题。 我们要用到的函数是SetWindowsHook
Hook : N种内核注入DLL的思路及实现
内核注入,技术古老但很实用。现在部分RK趋向无进程,玩的是SYS+DLL,有的无文件,全部存在于内存中。可能有部分人会说:“都进内核了.什么不能干?”。是啊,要是内核中可以做包括R3上所有能做的事,软件开发商们也没必要做应用程序了。有时,我们确实需要R3程序去干驱动做起来很困难或者没必要驱动中去做的事,进程 /  DLL是不错的选择,但进程目标太大,所以更多的同学趋向于注DLL。
windows10 记事本进程 键盘消息钩子 dll注入
看了很多文档,垮了很多坎,终于完成了这个demo; 有很多个人理解,可能不完全正确,见谅; 先上实现的图片: 如图,我通过SetWindowsHookEx()函数向记事本进程中当前窗口线程注入了自己写的dll,dll中设置的回调函数使,当键盘按了1,那么就会触发一个MessageBox。 工具:VS 2015, PCHunter(用于查看是否成功注入了dll,其实看能否实现功能就信...
dll注入进程后卸载的代码
//App.cpp #include "stdafx.h" #include #define MAX_SIZE 1024*16 #define DLL "D:/Code/TestCode/UnloadDll/UnloadDll/Debug/demo.dll" // 需要完整路径 HMODULE LoadRemoteLibrary(HANDLE hProcess,const char *pcLib
游戏注入教程(三)-- Hook拦截系统Api
一、新建一个用于拦截的MFC的dll,代码如下: //不同Instance共享的该变量hinst #pragma data_seg("SHARED") static HINSTANCE hinst = NULL; //本dll的实例句柄 (injectDll.dll) #pragma data_seg() #pragma comment(linker, "/section:SHARED,RWS"
C++ Hook IAT (基于IAT的Hook实践)
本实践基于HookImportFunction.cpp(h), 源自星际译王,代码附后 一. 使用方式   本实践由测试主程序部分与测试dll两部分组成,分别编译成功后,先运行test.exe,再使用dll注入工具将hookTest.dll注入到test.exe中,回车运行。 二. 测试主程序(test.exe) 1. 创建Win32控制台空项目文件 2. 创建应用程序入口文件(main
远程注入查看被注入程序使用的dll
远程注入查看被注入程序使用的dll,内含两个工程一个是要注入到进程的dll,另个是实施注入的控制台注入程序,实例简单
屏蔽CTRL+ATL+DEL热键
这个热键的优先级非常高,低级的键盘钩子无法拦截。 网上找来很多方法 1 种是修改注册表, 但是会弹出一个警告对话框。 另一种dll注入方式, 可以比较好的禁用。但是Vista之后不再使用GINA,所以Vista之后似乎只能使用DDK 键盘驱动层拦截 有一种方法是修改注册表键盘映射, 添加一个ScancodeMap 以下网站 http://www.northcode.com/blog.p
7.ring3-DLL劫持技术详解(lpk.dll)
背景知识 https://support.microsoft.com/en-us/kb/164501中记录了除了window的搜索dll顺序 要看中文的兄弟可以看:https://support.microsoft.com/zh-cn/kb/164501 我们当然主要关注32位的dll 对于 32 位 Dll 在找到 KnownDLLs 注册表项: HKEY_LOCAL_MA
关于注入及Hook的一点认识
关于注入及Hook的一点认识 经常我们会说到注入hook(这里说到的都以Ring3为准)之类,当第一次接触到这些的时候常常我弄了很久才将这两个概念分清。我们知道在Ring3层各个进程空间是相互独立的,而Hook是为了对其他进程实现控制或则获取其他进程中的信息。因此要实现hook的第一步就是我们让我们自己的东西(dll或则代码)进入我们想控制或则获取信息的进程中,而注入就是实现这种目的的重要方式在
DLL注入技术之消息钩子注入
DLL注入技术之消息钩子注入     消息钩子注入原理是利用Windows 系统中SetWindowsHookEx()这个API,他可以拦截目标进程的消息到指定的DLL中导出的函数,利用这个特性,我们可以将DLL注入到指定进程中。主要流程如下图所示: 1.准备阶段     需要编写一个DLL,并且显式导出MyMessageProc()函数,主要代码如下:
利用CreateProcess实现程序未启动前的监视,并注入DLL!
一、DLL注入技术的用途 DLL注入技术的用途是很广泛的,这主要体现在: 1、假如你要操纵的对象涉及的数据不在进程内; 2、你想对目标进程中的函数进行拦截(甚至API函数,嘿嘿,由此编写个拦截timeGettime的过程,变速齿轮不就出来了么?改天我试试),比如对它所属窗口进行子类化。 3、你想编写一些函数用于增强或增加目标进程功能,比如可以给目标进程的某个窗口插入个消息循
无痕HOOK方式=硬断+VEH
无痕HOOK方式=硬断+VEH
如何调试注入的Dll
假若我要使用InjectDll.exe将Do.dll注入到Target.exe程序中,我们该如何去调试Do.dll这个动态链接库呢?          我们需要在Do.dll的属性的调试中,将命令设为Target.exe(不是InjecDll.exe)。          运行InjectDll.exe文件,使用本地windows调试器来调试Do.dll就可以对Do.dll进行调试了。
Delphi进程注入的部分代码 (非DLL注入)
<br />//-------------------------注入代码的函数----------------------------   <br />{参数说明:  <br />InHWND:被注入的窗口句柄  <br />Func:注入的函数的指针  <br />Param:参数的指针  <br />ParamSize:参数的大小  <br />}  <br />procedure InjectFunc(InHWND: HWND; Func: Pointer; Param: Pointer; Para
利用LdrLoadLibrary加载与隐藏DLL (绕过API HOOK LoadLibrary)
//#include "stdafx.h" #include typedef struct _UNICODE_STRING { // UNICODE_STRING structure USHORT Length; USHORT MaximumLength; PWSTR Buffer; } UNICODE_STRING; typedef U
相关热词 c# 数组类型 泛型约束 c#的赛狗日程序 c# 传递数组 可变参数 c# 生成存储过程 c# list 补集 c#获得所有窗体 c# 当前秒数转成年月日 c#中的枚举 c# 计算校验和 连续随机数不重复c#
立即提问