当前位置: 首页 > news >正文

做网站 设备百度竞价关键词价格查询

做网站 设备,百度竞价关键词价格查询,公众号内容制作步骤,wordpress 静态文件CreateRemoteThread和WriteProcessMemory技术 示例程序:WinSpy 另一种注入代码到其他进程地址空间的方法是使用WriteProcessMemory API。这次你不用编写一个独立的DLL而是直接复制你的代码到远程进程(WriteProcessMemory)并用CreateRemoteT…

CreateRemoteThread和WriteProcessMemory技术

示例程序:WinSpy

另一种注入代码到其他进程地址空间的方法是使用WriteProcessMemory API。这次你不用编写一个独立的DLL而是直接复制你的代码到远程进程(WriteProcessMemory)并用CreateRemoteThread执行之。

让我们看一下CreateRemoteThread的声明: 

HANDLE CreateRemoteThread( 
   HANDLE hProcess,         
//  handle to process to create thread in 
   LPSECURITY_ATTRIBUTES lpThreadAttributes,    //  pointer to security
                                              
//  attributes 
   DWORD dwStackSize,        //  initial thread stack size, in bytes 
   LPTHREAD_START_ROUTINE lpStartAddress,       //  pointer to thread 
                                              
//  function 
   LPVOID lpParameter,       //  argument for new thread 
   DWORD dwCreationFlags,    //  creation flags 
   LPDWORD lpThreadId        //  pointer to returned thread identifier 
);


和CreateThread相比,有一下不同:
●增加了hProcess参数。这是要在其中创建线程的进程的句柄。 
●CreateRemoteThread的lpStartAddress参数必须指向远程进程的地址空间中的函数。这个函数必须存在于远程进程中,所以我们不能简单地传递一个本地ThreadFucn的地址,我们必须把代码复制到远程进程。 
●同样,lpParameter参数指向的数据也必须存在于远程进程中,我们也必须复制它。


现在,我们总结一下使用该技术的步骤:
1.   得到远程进程的HANDLE(OpenProcess)。 
2.   在远程进程中为要注入的数据分配内存(VirtualAllocEx)、 
3.   把初始化后的INJDATA结构复制到分配的内存中(WriteProcessMemory)。 
4.   在远程进程中为要注入的数据分配内存(VirtualAllocEx)。 
5.   把ThreadFunc复制到分配的内存中(WriteProcessMemory)。 
6.   用CreateRemoteThread启动远程的ThreadFunc。 
7.   等待远程线程的结束(WaitForSingleObject)。 
8.   从远程进程取回指执行结果(ReadProcessMemory 或 GetExitCodeThread)。 
9.   释放第2、4步分配的内存(VirtualFreeEx)。 
10.   关闭第6、1步打开打开的句柄。

另外,编写ThreadFunc时必须遵守以下规则: 
1.   ThreadFunc不能调用除kernel32.dll和user32.dll之外动态库中的API函数。只有kernel32.dll和user32.dll(如果被加载)可以保证在本地和目的进程中的加载地址是一样的。(注意:user32并不一定被所有的Win32进程加载!)参考附录A。如果你需要调用其他库中的函数,在注入的代码中使用LoadLibrary和GetProcessAddress强制加载。如果由于某种原因,你需要的动态库已经被映射进了目的进程,你也可以使用GetMoudleHandle代替LoadLibrary。同样,如果你想在ThreadFunc中调用你自己的函数,那么就分别复制这些函数到远程进程并通过INJDATA把地址提供给ThreadFunc。

2.   不要使用static字符串。把所有的字符串提供INJDATA传递。为什么?编译器会把所有的静态字符串放在可执行文件的“.data”段,而仅仅在代码中保留它们的引用(即指针)。这样,远程进程中的ThreadFunc就会执行不存在的内存数据(至少没有在它自己的内存空间中)。

3.   去掉编译器的/GZ编译选项。这个选项是默认的(看附录B)。 
4.   要么把ThreadFunc和AfterThreadFunc声明为static,要么关闭编译器的“增量连接(incremental linking)”(看附录C)。 

5.   ThreadFunc中的局部变量总大小必须小于4k字节(看附录D)。注意,当degug编译时,这4k中大约有10个字节会被事先占用。 
6.   如果有多于3tch分支的case语句,必须像下面这样分割开,或用if-else if代替.

     case constant1: statement1; goto END; 
     case constant2: statement2; goto END; 
     case constant3: statement2; goto END; 
}

     case constant4: statement4; goto END; 
     case constant5: statement5; goto END; 
     case constant6: statement6; goto END;

END: 

 

=====简单的CreateRemoteThread例程-初学者必看

 

//  _remotethreaddemo.cpp : Defines the entry point for the console application.
//  Author:秋镇菜

#include 
" stdafx.h "
#include 
" windows.h "


//  ========== 定义一个代码结构,本例为一个对话框============
struct  MyData
{
 
char  sz[ 64 ];  //  对话框显示内容
 DWORD dwMessageBox;  //  对话框的地址
};

//  ========== 远程线程的函数 ==============================
DWORD __stdcall RMTFunc(MyData  * pData)
{
 typedef 
int (__stdcall * MMessageBox)(HWND,LPCTSTR,LPCTSTR,UINT);
 MMessageBox MsgBox 
=  (MMessageBox)pData -> dwMessageBox;
 MsgBox(NULL, pData
-> sz, NULL, MB_OK);
 
return   0 ;
}
int  main( int  argc,  char *  argv[])
{
//  ===== 获得需要创建REMOTETHREAD的进程句柄 ===============================
 HWND hWnd  =  FindWindow( " notepad " , NULL);  //  以NOTEPAD为例
 DWORD dwProcessId;
 ::GetWindowThreadProcessId(hWnd, 
& dwProcessId);
 HANDLE hProcess 
=  OpenProcess(
        PROCESS_ALL_ACCESS,
        FALSE,
        dwProcessId);

//  ========= 代码结构 ================================================
 MyData data;
 ZeroMemory(
& data,  sizeof  (MyData));
 strcat(data.sz, 
" 对话框的内容. " );
 HINSTANCE hUser 
=  LoadLibrary( " user32.dll " );
 
if  ( !  hUser)
 {
  printf(
" Can not load library.  " );
  
return   0 ;
 }
 data.dwMessageBox 
=  (DWORD)GetProcAddress(hUser,  " MessageBoxA " );
 FreeLibrary(hUser);
 
if  ( !  data.dwMessageBox)
  
return   0 ;

//  ======= 分配空间 ===================================================
  void   * pRemoteThread
  
=  VirtualAllocEx(hProcess,  0 ,
      
1024 * 4 , MEM_COMMIT | MEM_RESERVE,
      PAGE_EXECUTE_READWRITE);
 
if  ( !  pRemoteThread)
  
return   0 ;
 
if  ( !  WriteProcessMemory(hProcess, pRemoteThread,  & RMTFunc,  1024 * 4 0 ))
  
return   0 ;

 MyData 
* pData
  
=  (MyData * )VirtualAllocEx(hProcess,  0 ,
      
sizeof  (MyData), MEM_COMMIT,
      PAGE_READWRITE);
 
if  ( ! pData)
  
return   0 ;

 
if  ( !  WriteProcessMemory(hProcess, pData,  & data,  sizeof  (MyData),  0 ))
  
return   0 ;

//  =========== 创建远程线程 ===========================================
 HANDLE hThread
  
=  CreateRemoteThread(hProcess,  0 ,
       
0 , (LPTHREAD_START_ROUTINE)pRemoteThread,
       pData, 
0 0 );
 
if  ( !  hThread)
 {
  printf(
" 远程线程创建失败 " );
  
return   0 ;
 }
 CloseHandle(hThread);
 VirtualFreeEx(hProcess, pRemoteThread, 
1024 * 3 , MEM_RELEASE);
 VirtualFreeEx(hProcess, pData, 
sizeof  (MyData), MEM_RELEASE);
 CloseHandle(hProcess);
 printf(
" Hello World!  " );
 
return   0 ;
}

程序在windows xp下运行, 弹出messagebox之后, 只要点击确定宿主进程就会崩溃。 
而且不止是messagebox,调用其它的api函数也是一样,请问这是什么原因?有什么办法可以解决吗? 
--------------------------------------------------------  

编译成RELEASE版本就不会出错了,主要是DEBUG版本加了一个__chkesp的函数导致调用了非法地址

http://www.15wanjia.com/news/40535.html

相关文章:

  • 营销型网站五大系统 单仁软文推广收费
  • 广南网站制作青岛网站seo优化
  • 怎么做网站美工重庆营销型网站建设公司
  • wordpress主题模板教程网站关键词排名手机优化软件
  • 站点-将网站添加到区域变灰色无法添加如何解决seo搜索引擎优化怎么优化
  • 热点新闻素材全网优化哪家好
  • 怎样做知道网站外贸如何推广
  • 重庆荣昌网站建设费用淘宝seo优化
  • 网络推广有几种方法seo是什么意思为什么要做seo
  • 哈尔滨最专业的网站建设免费b站推广网站不
  • 网站制作的要求平面设计
  • 国际顶尖设计公司赣州seo外包
  • wordpress应用镜像网络seo营销推广
  • aspnet东莞网站建设男生技能培训班有哪些
  • 虚拟主机 网站镜像对网站和网页的认识
  • 营销型网站效果不好游戏推广公司好做吗
  • 新网站外链怎么做北京百度网站排名优化
  • 网站策划书的内涵电商培训机构靠谱吗
  • o2o商城网站制作百度识图 上传图片
  • 有域名后怎么建网站找客户的软件有哪些
  • 做设计灵感的网站奖券世界推广网站
  • 网站建设与管理 自考人工智能培训班
  • 深圳万齐网站建设ui设计
  • 520高清网站三级黄色软件男女做百度客户服务电话
  • icp网站备案流程营销网站方案设计
  • p2p网贷网站建设seo技术外包
  • php做自己的网站怎么申请域名建网站
  • 邯郸移动网站制作友情链接发布网
  • 论坛网站推广方案网络推广 网站制作
  • 江苏优化网站公司哪家好免费网络推广工具