首页
社区
课程
招聘
[旧帖] 远线程注入后不能执行 0.00雪花
发表于: 2010-4-29 16:27 4322

[旧帖] 远线程注入后不能执行 0.00雪花

2010-4-29 16:27
4322
我以前用VC编写了个远线程注入程序,成功注入Explorer.exe进程

但是现在我也没有更改任何代码 运行我那个程序后 Dll文件注入后没有运行

难道是 因为我操作系统换了 XP-SP2换成了XP-SP3

后来,我试过了好几个远线程注入程序都失败了,以前都成功注入的呀

请大侠帮我分析下,谢谢

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 142
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没代码怎么分析呀?
试下这段代码,在我xp sp3下正常。
LONG FindTarget(LPCTSTR pProcessName)
{
BOOL bRet;
HANDLE hProcessSnap;
unsigned long ProcessID = -1;
PROCESSENTRY32 pe;
pe.dwSize = sizeof(pe);
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

bRet = Process32First(hProcessSnap, &pe);
while(bRet)
{
  if(lstrcmpi(pe.szExeFile, pProcessName) == 0)
  {
   ProcessID = pe.th32ProcessID;
   break;
  }
  bRet = Process32Next(hProcessSnap, &pe);
}
CloseHandle(hProcessSnap);

return ProcessID;
}

BOOL InjectExplorer(LPCTSTR szDllPath)
{
long pid = 0;
int ret = 0;
pid = FindTarget("Explorer.exe");
if(pid == -1)
{
  //没找到目标进程处理
  //....
  return FALSE;
}

HANDLE hProcess = NULL;
HANDLE hRemoteThread = NULL;
void *pLibRemote = NULL;
DWORD hLibModule = 0;
HMODULE hKernel32 = NULL;

hKernel32 = GetModuleHandle("Kernel32");
hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
if(hProcess == NULL)
{
  //打开进程失败处理
  //...
  return FALSE;
}
//在目标进程内分配内存
pLibRemote = VirtualAllocEx(hProcess,NULL,sizeof(szDllPath),MEM_COMMIT,PAGE_READWRITE);
//在目标进程空间内写入数据
ret = WriteProcessMemory(hProcess,pLibRemote,(void *) szDllPath,sizeof(szDllPath),NULL);
if(ret == 0)
{
  //写入失败处理
  //...
  return FALSE;
}

//创建远程线程
hRemoteThread = CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)GetProcAddress(hKernel32, "LoadLibraryA"),pLibRemote,0,NULL);
//等待执行结束
WaitForSingleObject(hRemoteThread, INFINITE);
GetExitCodeThread(hRemoteThread, &hLibModule);
CloseHandle(hRemoteThread);
//释放分配内存
VirtualFreeEx(hProcess, pLibRemote, sizeof(szDllPath), MEM_RELEASE);
// 关闭远程进程句柄
CloseHandle(hProcess);
return TRUE;
}
2010-4-29 21:16
0
游客
登录 | 注册 方可回帖
返回
//