远程注入
Remote Injection
所以,我正在将代码注入此类过程中:
:void RemoteInj::ExecuteFunction(DWORD Start, DWORD End, DWORD Entry, RemoteArgs* Args)
{
unsigned long Id;
int size = End - Start;
cout << size << endl;
void* Func = VirtualAllocEx(hProcess, NULL, size+10, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
void* ep = (void*)(Entry-Start+(DWORD)(Func));
WriteProcessMemory(hProcess, Func, (void*)Start, size, NULL);
void* Data = VirtualAllocEx(hProcess, NULL, sizeof(RemoteArgs)+1, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProcess, Data, (void*)Args, sizeof(RemoteArgs), NULL);
cout << hex << Func << endl;
cout << "Function: 0x" << hex << Start << endl << "End: 0x" << hex << End << endl;
system("PAUSE");
CreateRemoteThread(hProcess, NULL, NULL, (LPTHREAD_START_ROUTINE)ep, Data, NULL, NULL);
CloseHandle(hProcess);
}
我的问题是:如果我在该线程中使用呼叫,例如:
void F(RemoteArgs* arg)
{
while (true)
{
arg->pSleep(50); //Works
Sleep(50); //doesnt work
}
return;
}
我不需要解释为什么它不起作用,我知道,这是另一个过程。...我的问题是:有没有办法使函数(sleep(sleep())工作,我可以尝试导入到进程还具有适当的距离,您有一个更好的主意吗?谢谢!
正如您所怀疑的那样,这不立即起作用的原因是,在您的流程中睡觉的电话实际上转到了您的导入地址表(IAT)中的位置(IAT)在kernel32.dll中跳到真实的睡眠实现。即使另一个过程也导入kernel32.dll(所有过程都可以),但显然它没有相同的IAT。
有一些方法,但我知道没有一个很琐碎的。
相关文章:
- 无法使用加载库卸载注入的 dll (C++)
- 将 dll 文件注入 UWP
- 将具有固定签名的自定义函数名称注入 CRTP
- 发生注入类名时会发生什么情况?(C++)
- 作为指针注入类后重新创建堆栈对象不好吗?
- 如何使用可视化代码和平台IO将环境变量注入CPP文件?
- 限定的依赖名称查找,其中包含基类的注入类名
- 如何在窗口中使用注入的 dll 中的参数调用函数
- PostgresSQL - SQL Ready 语句与字符串转义,防止 SQL 注入攻击
- Windows 将标准的 C 文件结构注入到正在运行的进程中
- 当注入程序的内存空间时,如何读取从 0 到 0xFFFFFFFFF 的每个字节?我正在创建模式扫描仪
- 读取进程内存多级指针(DLL 注入)
- 如何在不诉诸依赖注入的情况下模拟遗留函数?
- 通过 dll 注入在主线程中执行代码
- C++Dll注入——Hello world Dll只有在注入到注入它的相同.exe中时才能工作
- C++正在注入dll,是否需要线程
- C++代码注入使注入的应用程序崩溃
- 在多线程应用程序中为注入的mprotect调用切换标志
- 使用远程线程的DLL注入在执行时不起任何作用
- 如何在注入的DLL中正确终止工作线程