能力值:
( LV2,RANK:15 )
|
-
-
2 楼
不导出就那地址JMP 咯
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
就是不知道怎么弄啊,所以才求助啊!
|
能力值:
( LV12,RANK:380 )
|
-
-
4 楼
get money hah✌ #include "stdafx.h"
#define WIN32_LEAN_AND_MEAN
#include "MinHook.h"
#if defined _M_X64
#pragma comment(lib, "lib/MinHook.x64.lib")
#elif defined _M_IX86
#pragma comment(lib, "lib/libMinHook-x86-v120-mdd.lib")
#endif
#include <winsock2.h> // Must be included before Mswsock.h
#include <mswsock.h>
#pragma comment(lib, "ws2_32.lib")
LPFN_CONNECTEX GetConnectExPtr(SOCKET s) {
LPFN_CONNECTEX lpConnectEx = NULL;
GUID guid = WSAID_CONNECTEX;
DWORD dwNumBytes = 0;
WSAIoctl(s , SIO_GET_EXTENSION_FUNCTION_POINTER , &guid , sizeof(guid) , &lpConnectEx , sizeof(lpConnectEx) , &dwNumBytes , NULL , NULL);
return lpConnectEx;
}
LPFN_CONNECTEX gb_ConnectEx = nullptr;
BOOL WINAPI Mine_ConnectEx(SOCKET s , const struct sockaddr *name , int namelen , PVOID lpSendBuffer , DWORD dwSendDataLength , LPDWORD lpdwBytesSent , LPOVERLAPPED lpOverlapped) {
// do something...
return gb_ConnectEx(s , name , namelen , lpSendBuffer , dwSendDataLength , lpdwBytesSent , lpOverlapped);
}
|
能力值:
( LV12,RANK:380 )
|
-
-
5 楼
在Microsoft edge上 发现一个小BUG 滑动的时候会有条痕 管理员查收下。。。。
|
能力值:
(RANK:350 )
|
-
-
6 楼
Tennn
在Microsoft edge上 发现一个小BUG 滑动的时候会有条痕 管理员查收下。。。。
感谢反馈! 我们明天换个大显示器重现一下。 你这个动画制作不错,用啥软件制作的?
|
能力值:
( LV12,RANK:380 )
|
-
-
7 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
Tennn 我先试下你的库,按你贴的代码来看,可能有问题的,比如:GetConnectExPtr(),这个是返回 connectEx 函数地址的,是动态的,我觉得至少是应该 hook WSAIoctl 后取得地址才行,直接调用 WSAIoctl 获取的地址和 hook 的地址不会一样的。我只是感觉,现在去试试,多些赐教,如有突破,定当感谢!
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
#pragma comment(lib, "lib/libMinHook-x86-v120-mdd.lib") 的时候报msvctrd.lib 和 libcmtd.lib 冲突,我把lib/libMinHook-x86-v120-mdd.lib换成lib/libMinHook-x86-v120-mtd.lib,编译没问题了,但 hook 不到。不知道哪里出错了。我是在 hook WSAIoctl 函数后取得Real_ConnectEx后调用的 MH_CreateHook,但调用失败了。不知何故,请指教!
|
能力值:
( LV12,RANK:380 )
|
-
-
10 楼
int main() {
WSADATA wsaData;
if(0 != WSAStartup(MAKEWORD(2 , 2) , &wsaData))
return false;
SOCKET s = socket(AF_INET , SOCK_STREAM , IPPROTO_TCP);
Real_ConnectEx = GetConnectExPtr(s);
if(MH_Initialize() != MH_OK) {
return 1;
}
if(MH_CreateHook(&*Real_ConnectEx , &Mine_ConnectEx ,
reinterpret_cast<LPVOID*>(&gb_ConnectEx)) != MH_OK) {
return 1;
}
if(MH_EnableHook(&*Real_ConnectEx) != MH_OK) {
return 1;
}
//do something
Real_ConnectEx(0 , 0 , 0 , 0 , 0 , 0 , 0);
if(MH_DisableHook(&*Real_ConnectEx) != MH_OK) {
return 1;
}
if(MH_Uninitialize() != MH_OK) {
return 1;
}
return 0;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
Tennn
int main() {
WSADATA wsaData;
if(0 != WSAStartup(MA ...
跟之前一样,MH_Initialize()可以成功,后面就不行了。
|
能力值:
( LV12,RANK:380 )
|
-
-
12 楼
你在逗我吗 昨天是我凭感觉弄的 没具体调试 失败很正常 刚刚这个我调试过了 不存在的 vs2013
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
Tennn
你在逗我吗 昨天是我凭感觉弄的 没具体调试 失败很正常 刚刚这个我调试过了 不存在的
vs2013
SOCKET s = socket(AF_INET , SOCK_STREAM , IPPROTO_TCP); Real_ConnectEx = GetConnectExPtr(s); 如果是 hook 的话,Real_ConnectEx是动态地址,你这个是硬取的地址,不一样的,我在 hook WSAIoctl 里获取的地址是不行的。还有更关键的一点,如果是 hook 的话,你也无法知道获取的是 ConnectEx 指针还是 AcceptEx 指针,或者是其他函数的指针。所以说你这个虽然 hook 到了,只是示例可以,真实用例中可能就出问题了。
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
这是在32上获取Real_ConnectEx 的地址 proto_ConnectEx typedef proto stdcall :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD plConnectEx typedef ptr proto_ConnectEx
SIO_GET_EXTENSION_FUNCTION_POINTER equ IOC_INOUT or IOC_WS2 or 6 _ConnectEx plConnectEx 0 ConnectExGuid GUID <25a207b9h,0ddf3h,4660h,<8eh,0e9h,76h,0e5h,8ch,74h,06h,3eh>>
;////////////////////////// invoke WSASocket,AF_INET, SOCK_STREAM,IPPROTO_IP, NULL,0,NULL cmp eax, NULL je GetError_exit mov s, eax
invoke WSAIoctl,s,SIO_GET_EXTENSION_FUNCTION_POINTER,addr ConnectExGuid,sizeof GUID,addr lpfnfunctionNAME,sizeof lpfnfunctionNAME,addr dwBytes,NULL,NULL cmp eax, SOCKET_ERROR je GetError_exit m2m _ConnectEx,lpfnfunctionNAME
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
sixL
这是在32上获取Real_ConnectEx 的地址proto_ConnectEx typedef proto& ...
这是什么代码?
|
能力值:
( LV12,RANK:380 )
|
-
-
16 楼
我不明白你的意思 什么是你口中的动态地址 我这个怎么是硬取地址 难道AcceptEx 也是这个方法吗 参数一样? 你说的真实实例是什么
按你发帖标题和内容 那么我做到了 一开始 你就需要把应用场景或其它更为详细的内容说出来 我好解答 不然你一个问题衍生出2个甚至多个相关问题 我很绝望啊
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
题主问题是有点多,我觉得Tennn解答的很不错了。要是题主还有其他问题,希望能另开贴问。
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
Tennn
你在逗我吗 昨天是我凭感觉弄的 没具体调试 失败很正常 刚刚这个我调试过了 不存在的
vs2013
怎么把赏金支付给你?结贴一提交就提示赏金未分配,实在不知道在哪里分配的,难道只能联系管理员?????
|
能力值:
(RANK:350 )
|
-
-
19 楼
深海游鱼
怎么把赏金支付给你?结贴一提交就提示赏金未分配,实在不知道在哪里分配的,难道只能联系管理员?????
单击结帖,找到Tennn回帖的这行,浏览器窗口被撑破,你在最右边,可以看到一个编辑框,让输入“ ”元,输入要给的数字,再结帖即可。
|
能力值:
(RANK:350 )
|
-
-
20 楼
深海游鱼
怎么把赏金支付给你?结贴一提交就提示赏金未分配,实在不知道在哪里分配的,难道只能联系管理员?????
若不会操作,回帖告诉我,我帮你结帖
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
1. 先获取connectEx指针,得到函数地址: static LPFN_sock_ConnectEx GetConnectExPtr() { LPFN_sock_ConnectEx lpConnectEx = NULL; GUID guid = WSAID_CONNECTEX; DWORD dwNumBytes = 0;
SOCKET s = socket(AF_INET , SOCK_STREAM , IPPROTO_TCP); WSAIoctl(s , SIO_GET_EXTENSION_FUNCTION_POINTER , &guid , sizeof(guid) , &lpConnectEx , sizeof(lpConnectEx) , &dwNumBytes , NULL , NULL); closesocket(s); return lpConnectEx; } 2. 用普通jmp方式或其他如mhook。
|
|
|