社区
进程/线程/DLL
帖子详情
难题~高手请进~
mayorvb
2011-02-15 03:28:11
已知某个进程的ID,线程,hInstance和函数地址f。
如何在其他进程调用该进程中的函数f?
...全文
266
22
打赏
收藏
难题~高手请进~
已知某个进程的ID,线程,hInstance和函数地址f。 如何在其他进程调用该进程中的函数f?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
demonsprite
2011-02-16
打赏
举报
回复
是很难的。
mayorvb
2011-02-15
打赏
举报
回复
yxwsbobo 非常非常非常感谢~~~
mayorvb
2011-02-15
打赏
举报
回复
成功了~~~
// DllTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <windows.h>
typedef void (__stdcall * PFN_MESSAGEBOX)(int);
typedef struct _RemoteParam {
int myi; //MessageBox函数中显示的字符提示
DWORD dwMessageBox;//MessageBox函数的入口地址
} RemoteParam, * PRemoteParam;
DWORD __stdcall threadProc(LPVOID lParam)
{
RemoteParam* pRP = (RemoteParam*)lParam;
PFN_MESSAGEBOX pfnMessageBox;
pfnMessageBox = (PFN_MESSAGEBOX)pRP->dwMessageBox;
pfnMessageBox(pRP->myi);
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
const DWORD dwThreadSize = 4096;
DWORD dwWriteBytes;
DWORD dwProcessId = 4600;
HANDLE hTargetProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId);
void* pRemoteThread = VirtualAllocEx(hTargetProcess, 0,
dwThreadSize, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if (!WriteProcessMemory(hTargetProcess, pRemoteThread, &threadProc, dwThreadSize, 0)) {
return 0;
}
RemoteParam remoteData;
//HINSTANCE hUser32 = LoadLibrary("User32.dll");
remoteData.dwMessageBox = (DWORD)4544192;
//FreeLibrary(hUser32);
remoteData.myi=88;
RemoteParam* pRemoteParam = (RemoteParam*)VirtualAllocEx(
hTargetProcess , 0, sizeof(RemoteParam), MEM_COMMIT, PAGE_READWRITE);
if (!WriteProcessMemory(hTargetProcess , pRemoteParam, &remoteData, sizeof(remoteData), 0)) {
return 0;
}
HANDLE hRemoteThread = CreateRemoteThread(
hTargetProcess, NULL, 0, (DWORD (__stdcall *)(void *))pRemoteThread,
pRemoteParam, 0, &dwWriteBytes);
CloseHandle(hRemoteThread);
::MessageBox(0,L"ok",L"ok",0);
return 0;
}
mayorvb
2011-02-15
打赏
举报
回复
#include "stdafx.h"
#include "windows.h"
typedef void (WINAPI * INPUTCHANGE)(int HK);
DWORD __stdcall RunFunction (LPVOID lpThreadParameter)
{
//lpThreadParameter 传入你的参数 HK
INPUTCHANGE InputChange = (INPUTCHANGE)4928292;//填入你的函数地址
InputChange((int)lpThreadParameter);
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hProcess=OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_WRITE|PROCESS_CREATE_THREAD|PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,1494);
PVOID FunBuffer = VirtualAllocEx(hProcess,NULL,1024*4,MEM_RESERVE|MEM_COMMIT
,PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hProcess,FunBuffer,(PVOID)&RunFunction,1024*4,NULL);
CreateRemoteThread(hProcess,NULL,NULL,(LPTHREAD_START_ROUTINE)FunBuffer,(LPVOID)23,NULL,NULL);
CloseHandle(hProcess);
return 0;
}
还是失败~
yxwsbobo
2011-02-15
打赏
举报
回复
HANDLE hProcess=OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_WRITE|PROCESS_CREATE_THREAD|PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,ProcessId);
Lactoferrin
2011-02-15
打赏
举报
回复
hProcess=OpenProcess(2035711,0,目标进程id);
hProcess几乎不可能是常数
mayorvb
2011-02-15
打赏
举报
回复
没有成功~
#include "stdafx.h"
#include "windows.h"
typedef void (WINAPI * INPUTCHANGE)(int HK);
DWORD __stdcall RunFunction (LPVOID lpThreadParameter)
{
//lpThreadParameter 传入你的参数 HK
INPUTCHANGE InputChange = (INPUTCHANGE)4544192;//填入你的函数地址
InputChange((int)lpThreadParameter);
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hProcess=(HANDLE)0xdd4;
PVOID FunBuffer = VirtualAllocEx(hProcess,NULL,1024*4,MEM_RESERVE|MEM_COMMIT
,PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hProcess,FunBuffer,(PVOID)&RunFunction,1024*4,NULL);
CreateRemoteThread(hProcess,NULL,NULL,(LPTHREAD_START_ROUTINE)FunBuffer,(LPVOID)23,NULL,NULL);
return 0;
}
可能是没有开hpeocess,
mayorvb
2011-02-15
打赏
举报
回复
恩 试一试~~
yxwsbobo
2011-02-15
打赏
举报
回复
//typedef void (WINAPI * INPUTCHANGE)(int HK);
DWORD __stdcall RunFunction (LPVOID lpThreadParameter)
{
//lpThreadParameter 传入你的参数 HK
INPUTCHANGE InputChange = (INPUTCHANGE)0x33333//填入你的函数地址
InputChange((int)lpThreadParameter)
return 0;
}
int main()
{
PVOID FunBuffer = VirtualAllocEx(hProcess,NULL,1024*4,MEM_RESERVE|MEM_COMMIT
,PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hProcess,FunBuffer,(PVOID)&RunFunction,1024*4,NULL);
CreateRemoteThread(HProcess,NULL,NULL,FunBuffer,HK,NULL,NULL);
}
//要确保有对目标进程进行这些操作的权限,并且要用Release版本
yxwsbobo
2011-02-15
打赏
举报
回复
哦 不好意思 瞎说呢.......
mayorvb
2011-02-15
打赏
举报
回复
哎,还是不行,程序出错。
函数原型:
typedef void (WINAPI * InputChange)(int HK);
我这儿地址都有就是不知道怎么调用。。。
mayorvb
2011-02-15
打赏
举报
回复
[Quote=引用 8 楼 yxwsbobo 的回复:]
如果是B进程让A进程调用函数
那么就直接CreateRemoteThread 就可以了,传入函数地址,和相应参数就行了,如果是字符串,要保证字符串在A进程中
[/Quote]
明白了,我试试运气看看能不能成功,函数有一个4个字节的整型参数。
mayorvb
2011-02-15
打赏
举报
回复
[Quote=引用 6 楼 m_tornado 的回复:]
CreateRemoteThread注入
GetProcAddress函数地址
_asm call 或者转换函数地址调用都可以
[/Quote]
麻烦您了,能不能详细点?现在已知函数地址应该不用GetProcAddress。而且这个进程是正在运行的进程。
yxwsbobo
2011-02-15
打赏
举报
回复
如果是B进程让A进程调用函数
那么就直接CreateRemoteThread 就可以了,传入函数地址,和相应参数就行了,如果是字符串,要保证字符串在A进程中
yxwsbobo
2011-02-15
打赏
举报
回复
要在B进程中调用A进程的函数
需要将A进程的函数代码复制到B进程 ReadProcessMemroy ,函数大小不知道的话可以多复制点过来,只要全就行,多了不怕
之后如果有的话需要修改相应的全局变量,API调用,重定位,如果函数简单没有这些就不需要了
m_tornado
2011-02-15
打赏
举报
回复
CreateRemoteThread注入
GetProcAddress函数地址
_asm call 或者转换函数地址调用都可以
mayorvb
2011-02-15
打赏
举报
回复
[Quote=引用 2 楼 fishion 的回复:]
远程进程注入,你有函数地址,有这函数的参数表没
[/Quote]
有,函数名,函数地址,函数参数原型都有。关键是如何调用了。能不能详细点?
fishion
2011-02-15
打赏
举报
回复
不过,这样也行..刚刚看错了
fishion
2011-02-15
打赏
举报
回复
远程进程注入,你有函数地址,有这函数的参数表没
lw1211
2011-02-15
打赏
举报
回复
ReadProcessMemory
动态内存分配c++实现的一个
难题
!!!请
高手
帮忙!
最进在用c++实现动态内存分配模拟程序,基于最坏适应算法wf,但是内存分配函数中的一个for循环不知怎地就是不正确。代码如下: #include #include #include #include #include struct block{ char name[10];//...
一年成为Emacs
高手
(像神一样使用编辑器)
成为
高手
很容易. 我初学Emacs时常忘记”退出”的快捷键, 一年后我完全掌握了Emacs. 一些文章强调Emacs有多牛, 但关于”如何做”则语焉不详. 即使涉及到”如何做”, 谈细节多而方法论少. 很多人花了大量时间”学习”...
Android基础知识~入门进阶,一步步走到
高手
Android基础知识~入门进阶,一步步走到
高手
2011年09月01日 [b]希望新入手ANDROID设备的朋友认真阅读本帖,一些简单的问题就可以自己解决了!!! 一:基础知识[/b] [b]1、什么是Android 系统 [/b]――...
一年成为Emacs
高手
(像神一样使用编辑器)
成为
高手
很容易.当初我在Vi阵营,偶尔用Emacs还忘记"退出"的快捷键,一年后我跨入
高手
行列. 很多文章强调Emacs有多牛,但关于"如何做"则语焉不详.即使涉及到"如何做",谈细节多而方法论少,所以本文就侧重方法论. 全文...
vb获取html中的inout,关于Base64编码的
难题
,请来帮忙(VB6调用javascript函数示例)
关于Base64编码的
难题
,请
高手
进来帮忙(VB6调用javascript函数示例)本帖最后由 bcrun 于 2014-06-14 11:07:30 编辑关于VB6的base64编码,百度搜索有不少代码,但都没能实现如下功能。似乎都是GB2312编码将《中华人民...
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章