• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            c++初學者

            專注技術開發

            【轉】向任意進程注入DLL

            可能這對高手來說已經是老掉牙的東西了,

            還是來說說原理把(本人也是菜鳥啊)!
            遠程注入就是在目標進程中用VirtualAllocEx申請一段內存,
            然后用WriteProcessMemory函數將自己dll的完整路徑復制到遠程進程中,
            然后在Kernel32中計算LoadLibraryA的地址,再調用LoadLibraryA函數加載遠程dll,
            并在CreateRemoteThread創建遠程進程!
            Code Language : C
            #include \"stdafx.h\"
            #include \"windows.h\"
            #include \"tlhelp32.h\"
            #include \"stdio.h\"
            #pragma comment(lib,\"ws2_32\")
             
            int EnableDebugPriv(const char * name)//提提權函數
            {
              HANDLE hToken;
              TOKEN_PRIVILEGES tp;
              LUID luid;
              //打開進程令牌環
              if(!OpenProcessToken(GetCurrentProcess(),
              TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,
                &hToken))
              {
                MessageBox(NULL,\"OpenProcessToken Error!\",\"Error!\",MB_OK);
                 return 1;
             }
             //獲得進程本地唯一ID
             if(!LookupPrivilegeValue(NULL,name,&luid))
             {
               MessageBox(NULL,\"LookupPrivivlegeValue Error!\",\"Error\",MB_OK);
             }
             tp.PrivilegeCount=1;
             tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
             tp.Privileges[0].Luid=luid;
             //調整權限
             if(!AdjustTokenPrivileges(hToken,0,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL))
             {
               MessageBox(NULL,\"AdjustTokenPrivileges Error!\",\"Error\",MB_OK);
               return 1;
             }
             return 0;
            }
            BOOL injectit(const char *DllPath,const DWORD dwRemoteProcessld)//注入主函數
            {
             HANDLE hrp;
             if(EnableDebugPriv(SE_DEBUG_NAME))
             {
               MessageBox(NULL,\"Add Privilege Error!\",\"Error\",MB_OK);
               return FALSE;
             }
             if((hrp=OpenProcess(PROCESS_CREATE_THREAD|//允許遠程創建線程
               PROCESS_VM_OPERATION|//允許遠程VM操作
               PROCESS_VM_WRITE,//允許遠程VM寫
               FALSE,dwRemoteProcessld))==NULL)
             {
               MessageBox(NULL,\"OpenProcess Error!\",\"Error\",MB_OK);
               return FALSE;
             }
             char *psLibFileRemote;
             //使用VirtualAllocEx函數在遠程進程的內存地址空間分配DLL文件名緩沖
             psLibFileRemote=(char *)VirtualAllocEx(hrp,NULL,lstrlen(DllPath)+1,
               MEM_COMMIT,PAGE_READWRITE);
             if(psLibFileRemote==NULL)
             {
               MessageBox(NULL,\"VirtualAllocEx Error!\",\"Error\",MB_OK);
               return FALSE;
             }
             //使用WriteProcessMemory函數將DLL的路徑名復制到遠程的內存空間
             if(WriteProcessMemory(hrp,psLibFileRemote,(void *)DllPath,lstrlen(DllPath)+1,NULL)==0)
             {
               MessageBox(NULL,\"WriteProcessMemory Error!\",\"Error\",MB_OK);
               return FALSE;
             }
             //計算LoadLibraryA的入口地址
             PTHREAD_START_ROUTINE pfnStartAddr=(PTHREAD_START_ROUTINE)
               GetProcAddress(GetModuleHandle(TEXT(\"Kernel32\")),\"LoadLibraryA\");
             if(pfnStartAddr==NULL)
             {
               MessageBox(NULL,\"GetProcAddress Error!\",\"Error\",MB_OK);
               return FALSE;
             }
             //pfnStartAddr地址就是LoadLibraryA的入口地址
             
             
             HANDLE hrt;
             if((hrt=CreateRemoteThread(hrp,
               NULL,
               0,
               pfnStartAddr,
               psLibFileRemote,
               0,
               NULL))==NULL)
             {
               MessageBox(NULL,\"CreateRemote Error!\",\"Error\",MB_OK);
               return FALSE;
             }
             return TRUE;
            }
            unsigned long getpid(char *pn)//得到進程pid
            {
             BOOL b;
             HANDLE hnd;
             PROCESSENTRY32 pe;
             //得到進程快照
             hnd=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
             pe.dwSize=sizeof(pe);
             b=Process32First(hnd,&pe);
             while(b)
             {
               if(strcmp(pn,pe.szExeFile)==0)
                 return pe.th32ProcessID;
               b=Process32Next(hnd,&pe);
             }
            }
             
            int main(int argc, char* argv[])
            {
             if(argc<2)
             {
               printf(\"++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\");
               printf(\"injectpro V1.0!\nAuthor:text QQ:52674548\nusage:\n injectpro.exe targetprocess youdll\n\");
               printf(\" eg:injectpro.exe iexplorer.exe c:\\youdll.dll\n\");
               printf(\"++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\");
               return 0;
             }
             EnableDebugPriv(SE_DEBUG_NAME);//自身提權
             DWORD pid=getpid(argv[1]);
             //printf(\"%d\",pid);
             if(pid==0)
               return 1;
               if(injectit(argv[2],pid))
               {
                 printf(\"inject success!\");
               }
               else
               {
                 printf(\"inject error!\");
               }
             return 0;
            }

            本篇文章來源于 黑反在線-信息安全第一站 原文鏈接:http://www.hf110.com/hack/hackprg/200809/203556.html

            posted on 2008-09-28 12:24 大海 閱讀(1655) 評論(0)  編輯 收藏 引用 所屬分類: VC++

            久久国产精品成人免费| 久久久久久国产精品无码下载| 99久久免费国产精品特黄| 免费精品久久久久久中文字幕 | 久久久久久久久无码精品亚洲日韩| 精品熟女少妇AV免费久久| 狠狠色婷婷久久一区二区三区| 欧美亚洲国产精品久久蜜芽| 一本一道久久a久久精品综合 | 色婷婷综合久久久中文字幕| 狠色狠色狠狠色综合久久| 无码人妻少妇久久中文字幕| AV无码久久久久不卡蜜桃| 亚洲欧美一区二区三区久久| 青青青国产精品国产精品久久久久 | 亚洲中文字幕无码久久2020 | 久久久久青草线蕉综合超碰| 国产精品久久精品| 亚洲国产精品久久久天堂| 久久午夜福利电影| 97久久精品国产精品青草| 人妻无码αv中文字幕久久琪琪布| 国产成人综合久久精品尤物| 99久久无色码中文字幕| 久久精品日日躁夜夜躁欧美| 久久中文字幕无码专区| 99久久国产免费福利| 国产精品久久久久aaaa| 久久久久人妻一区精品色| 亚洲中文字幕无码久久精品1| 波多野结衣久久一区二区 | 中文字幕无码久久久| 久久久久无码精品| 久久久精品国产Sm最大网站| 国产精品无码久久久久| 秋霞久久国产精品电影院| 99久久久精品免费观看国产| 精品国产乱码久久久久久1区2区| 国内精品久久人妻互换| 国产高潮国产高潮久久久| 久久99国产精品99久久|