您没有来错地!为了更好的发展,黑基网已于9月19日正式更名为【安基网】,域名更换为www.safebase.cn,请卸载旧的APP并安装新的APP,给您带来不便,敬请理解!谢谢

黑基Web安全攻防班
安基网 首页 IT技术 安全攻防 查看内容

远程卸载DLL代码

2009-6-26 09:44| 投稿: security

摘要:   BOOL UnLoadModules( LPCTSTR processname , LPCTSTR modulename)  {  HANDLE hModuleSnap = INVALID_HAN...
  BOOL UnLoadModules( LPCTSTR processname , LPCTSTR modulename)  {  HANDLE hModuleSnap = INVALID_HANDLE_VALUE;  MODULEENTRY32 me32;  HANDLE hpro;  DWORD modulebase;  DWORD pid=GetProcessIdByName(processname);  hpro= OpenProcess  (  PROCESS_ALL_ACCESS,  TRUE,  pid  );  hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, pid );  if( hModuleSnap == INVALID_HANDLE_VALUE )  {  return( FALSE );  }  me32.dwSize = sizeof( MODULEENTRY32 );  if( !Module32First( hModuleSnap, &me32 ) )  {  CloseHandle( hModuleSnap );  return( FALSE );  }  do  {  printf( "\n\n     MODULE NAME:     %s",             me32.szModule );  printf( "\n     executable     = %s",             me32.szExePath );  printf( "\n     process ID     = 0x%08X",         me32.th32ProcessID );  printf( "\n     ref count (g) =     0x%04X",     me32.GlblcntUsage );  printf( "\n     ref count (p) =     0x%04X",     me32.ProccntUsage );  printf( "\n     base address   = 0x%08X", (DWORD) me32.modBaseAddr );  printf( "\n     base size      = %d",             me32.modBaseSize );  if(!strcmpi(me32.szModule, modulename))  {  modulebase=(DWORD)me32.modBaseAddr;  printf("module :%s found at :%x\n",modulename,modulebase);  break;  }  } while( Module32Next( hModuleSnap, &me32 ) );  ZwUnmapViewOfSection(hpro,(DWORD)modulebase);  CloseHandle( hModuleSnap );  return( TRUE );  }  DWORD GetProcessIdByName(LPCTSTR name)  {  PROCESSENTRY32 prostruct;  DWORD id = 0;  HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);  prostruct.dwSize = sizeof(PROCESSENTRY32);  if(!Process32First(hSnapshot,&prostruct))  return 0;  do  {  prostruct.dwSize = sizeof(PROCESSENTRY32);  if(!Process32Next(hSnapshot,&prostruct))  break;  if(strcmp(prostruct.szExeFile,name) == 0)  {  id = prostruct.th32ProcessID;  break;  }  }while(TRUE);  CloseHandle(hSnapshot);  return id;  }  ZwUnmapViewOfSection这个NTDLL中的函数的地址自己用GetProcAddress就可以得到引用了

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部