當前位置:蘿卜系統下載站 > 網頁設計教程 > 詳細頁面

C++源代碼免殺之函數的動態調用

C++源代碼免殺之函數的動態調用

更新時間:2019-04-25 文章作者:未知 信息來源:網絡 閱讀次數:

網站建設是指使用標識語言(markup language),通過一系列設計、建模、和執行的過程將電子格式的信息通過互聯網傳輸,最終以圖形用戶界面(GUI)的形式被用戶所瀏覽。簡單來說,網頁設計的目的就是產生網站。簡單的信息如文字,圖片(GIF,JPEG,PNG)和表格,都可以通過使超文件標示語言、可擴展超文本標記語言等標示語言放置到網站頁面上。

最近也在學著修改Gh0st遠控的源代碼,源代碼免殺起來還是方便、簡單、有效和簡單點。針對于輸入輸出表盯的比較緊的殺毒軟件,最有效的還是進行函數動態調用。也就是說找到函數的原定義,包括值類型和參數等等,再在調用該函數的地方重新定義這個函數,其實也只是改下函數名而已,下面舉個例子:
    CreateRemoteThread 作用是創建遠線程,假設殺毒軟件現在就殺在這個函數上,我們就這樣處理,首先在代碼中右鍵點擊CreateRemoteThread函數-->轉到定義,找到函數的原型:
    函數原型如下:
    WINBASEAPI
    __out
    HANDLE
    WINAPI
    CreateRemoteThread(
    __in HANDLE hProcess,
    __in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,
    __in SIZE_T dwStackSize,
    __in LPTHREAD_START_ROUTINE lpStartAddress,
    __in_opt LPVOID lpParameter,
    __in DWORD dwCreationFlags,
    __out_opt LPDWORD lpThreadId
    );
    改后的函數模型如下:
    typedef HANDLE (WINAPI *CreateRemoteThreadxx)
    (
    __in HANDLE hProcess,
    __in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,
    __in SIZE_T dwStackSize,
    __in LPTHREAD_START_ROUTINE lpStartAddress,
    __in_opt LPVOID lpParameter,
    __in DWORD dwCreationFlags,
    __out_opt LPDWORD lpThreadId
    );
    CreateRemoteThreadxx yyCreateRemoteThread= (CreateRemoteThreadxx)GetProcAddress(LoadLibrary("kernel32.dll"),"CreateRemoteThread");
    補充:有些函數原型最后面分別帶得有A和W的,如果你的編譯環境是ANSI環境就選擇帶A的那部分,如果你的環境是Unicode環境,那就選擇帶W的那部分。例如:GetUserName的原型有兩種定義:GetUserNameA和GetUserNameW,視實際情況選擇相應的函數原型進行修改就好。
    修改后調用的函數名就由CreateRemoteThread變為了yyCreateRemoteThread,紅色部分為自定義部分,隨便你改稱什么,但是要注意前后一致。藍色的部分再可以用字符串連接法進行分離后連接,這樣處理之后,殺毒軟件就找不到CreateRemoteThread這個函數了。到此,文件的這處也就免殺了。一點小手記,分享給大家,見笑了。
    后記:看了很多教程,都是說怎么改,沒說為什么要這么改,也沒說還可以怎么改,更沒說改的限度是什么。一看教程里先在函數后面加個L,再在定義后的新的函數前面加個p,接著很多看了教程的人都改成那兩個,做教程的人還在教程里嚇唬人說“別的都不要動,這兩個地方改成這樣就可以了”,有時候有些事情并不難,并不可怕,難和可怕大多來自于別人的聳人聽聞和對未知事物的懼怕。最后希望大家都能夠放開手腳,干番大事業!搞了個垃圾站賺點外塊,希望大家能支持下。

大多數人在上網的時候,都會瀏覽網頁提供給我們的信息。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

亚洲嫩草影院久久精品