• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

             首頁 > 專欄

            pent

            更新時間:2023-03-27 10:47:45 閱讀: 評論:0

            物聯網發展前景-天賦異稟怎么讀

            pent
            2023年3月27日發(作者:教師個人事跡材料)

            Shellcode和Payload?門101-超詳細源碼和注釋以及Hex?本

            前?:

            ?先定義兩個概念,在?段ShellCode代碼中我們可以認為它有兩個部分。

            ShellCode:?于創建PayLoad環境部分

            PayLoad:實現需求部分

            以下是源代碼,OPcode接近400個字節,僅僅完成了MessageBox彈窗,代碼有很?的優化空間。

            //ShellCode_:定義控制臺應?程序的??點。

            //

            //Locals——局部變量

            #defineKernalBaAddr[EBP-0x4]

            #definepEAT[EBP-0x8]

            #definepENT[EBP-0xC]

            #definepEOT[EBP-0x10]

            #definePGETPROCADDRESS[EBP-0x14]

            #definePLOADLIBRARYA[EBP-0x18]

            #definePEXITPROCESS[EBP-0x1C]

            #defineUr32BaAddr[EBP-0x20]

            #definePMESSAGEBOX[EBP-0x24]

            //strRVA——字符串尋址

            #definewzKERNAL32[EDX+0x9]

            #defineszGetProcAddress[EDX+0x22]

            #defineszLoadLibraryA[EDX+0x31]

            #defineszExitProcess[EDX+0x3E]

            #defineszUr32[EDX+0x4A]

            #defineszMessageBoxA[EDX+0x55]

            #defineszGreetings[EDX+0x61]

            //Main

            int_tmain(intargc,_TCHAR*argv[])

            {

            _asm

            {

            pushad;

            SUBESP,0X60;

            tag_OEP:

            /*—————————————————————————————————

            KeyNote

            關于在ShellCode中動態獲取EIP?法——FSTENV?式

            |有時候為了增強ShellCode的健壯性和普遍適?性,我們會選擇動態獲取函數來使?,

            |?在獲取模塊地址和函數地址時難免會使?到字符串等常量,我們很難保證所有的?標程序中都有我們需要的字符串,

            |所以我們需要將??所需要的字符串保存在?個隨時能夠簡單獲取的地?,那這要如何做到呢,

            |?較容易想到的?個辦法就是將字符串藏到代碼?,然后在代碼中通過尋址找到相應的字符串。

            |通常的尋址?式??就是?個基址+?個偏移:

            |?個偏移:在內存中代碼就是OPcode,ShellCode也是16進制的數據,這些16進制數據加載到內存中和在?件中的相對位置是不變的,

            |可以理解為ShellCode中任意?個字節相對另外?個字節的值在?件中和在內存中是?樣的,

            |那么我們就可以?動算出這個值,作為某個數據相對于某個位置的偏移。

            |?個基址:本項?的第?個難點就在于動態獲取?個基址即EIP,即某代碼字節在內存中的地址,我們可以動態獲取?個地址,?成好?件后,

            |查看項?的OPcode來計算出字符串相對基址的偏移,然后就可以獲取到字符串的?地址了。

            |動態獲取?個EIP的?法有?種,均來?于前輩們的??,?且?多看似很簡單,卻不失精妙,簡單的?個字節,就體現了前輩們思維的銳利。

            |我這?使?的是稍顯不尋常的?法,希望能夠應變某些復雜?點的環境,下?為?家講述?下我對FSTENV?式的鄙見

            |************************************************************************

            |FSTENV是?個匯編指令,CPU?其記錄最后?條浮點數指令的環境到內存中,其中就包括了這條指令的EIP

            |那么步驟便是小學生日記二年級 :

            |1.操作浮點數

            |2.保存環境到棧中

            |3.保存EIP

            |NOTE:下?使?FNSTENV[ESP-0xc],因這條指令保存的是?個結構體,?我們所需要的EIP是第4個

            |元素,將這個結構體從[ESP-0xc]開始PUSH,那么這條指令執?完后,ESP指向的便是我們所需

            |要的數據,所以下?條匯編只需?個簡單的POP即可獲得我們夢寐以求的??的位置,哦不,是

            |ShellCode的位置,?通往?標程序?臟的鑰匙就在你?中。

            —————————————————————————————————*/

            //GetPC——動態獲取ShellCode起始位置

            FLDZ;//|ShellCodeBa

            FNSTENV[ESP-0xc];//|

            POPEDX;//|EDX==ShellCodeBa

            JMPtag_shellcode;//|->0x9bytes

            //.rdata——ShellCode全局變量

            #pragmaregionCHAR*&WCHAR*

            //DataSectionVA:[ShellCodeBa+0x9]

            //L""[EDX+0x9]

            _asm_emit(0x4b)_asm_emit(0x00)_asm_emit(0x45)_asm_emit(0x00)

            _asm_emit(0x52)_asm_emit(0x00)_asm_emit(0x4e)_asm_emit(0x00)

            _asm_emit(0x45)_asm_emit(0x00)_asm_emit(0x4c)_asm_emit(0x00)

            _asm_emit(0x33)_asm_emit(0x00)_asm_emit(0x32)_asm_emit(0x00)

            _asm_emit(0x2e)_asm_emit(0x00)_asm_emit(0x44)_asm_emit(0x00)

            _asm_emit(0x4c)_asm_emit(0x00)_asm_emit(0x4c)_asm_emit(0x00)

            _asm_emit(0x00)//0x19bytes

            //"GetProcAddress"[EDX+0x22]

            _asm_emit(0x47)_asm_emit(0x65)_asm_emit(0x74)_asm_駕照英文 emit(0x50)

            _asm_emit(0x72)_asm_emit(0x6f)_asm_emit(0x63)_asm_emit(0x41)

            _asm_emit(0x64)_asm_emit(0x64)_asm_emit(0x72)_asm_emit(0x65)

            _asm_emit(0x73)_asm_emit(0x73)_asm_emit(0x00)//0xFbytes

            //"LoadLibraryA"[EDX+0x31]

            _asm_emit(0x4c)_asm_emit(0x6f)_asm_emit(0x61)_asm_emit(0x64)

            _asm_emit(0x4c)_asm_emit(0x69)_asm_emit(0x62)_asm_emit(0x72)

            _asm_emit(0x61)_asm_emit(0x72)_asm_emit(0x79)_asm_emit(0x41)

            _asm_emit(0x00)//0xDbytes

            //"ExitProcess"[EDX+0x3E]

            _asm_emit(0x45)_asm_emit(0x78)_asm_emit(0x69)_asm_emit(0x74)

            _asm_emit(0x50)_asm_emit(0x72)_asm_emit(0x6F)_asm_emit(0x63)

            _asm_emit(0x65)_asm_emit(0x73)_asm_emit(0x73)_asm_emit(0x00)//0xCbytes

            //""[EDX+0x4A]

            _asm_emit(0x55)_asm_emit(0x73)_asm_emit(0x65)_asm_emit(0x72)

            _asm_emit(0x33)_asm_emit(0x32)_asm_emit(0x2e)_asm_emit(0x64)

            _asm_emit(0x6c)_asm_emit(0x6c)_asm_emit(0x00)//0xBbytes

            //"MessageBoxA"[EDX+0x55]

            _asm_emit(0x4D)_asm_emit(0x65)_asm_emit(0x73)_asm_emit(0x73)

            _asm_emit(0x61)_asm_emit(0x67)_asm_emit(0x65)_asm_emit(0x42)

            _asm_emit(0x6F)_asm_emit(0x78)_asm_emit(0x41)_asm_emit(0x00)//0xCbytes

            //"Hello15PB"[EDX+0x61]

            _asm_emit(0x48)_asm_emit(0x65)_asm_emit(0x6C)_asm_emit(0x6C)

            _asm_emit(0x6F)_asm_emit(0x20)_asm_emit(0x31)_asm_emit(0x35)

            _asm_emit(0x50)_asm_emit(0x42)_asm_emit(0x20)_asm_emit(0x00)//0xCbytes

            #pragmaendregionCHAR*&WCHAR*

            /*—————————————————————————————————

            GetModuleBa——獲取基址

            Ldr_PEB_LDR_DATA

            InLoadOrderModuleList_List_ENTRY

            _LIST_ENTRY{

            +0x000Flink:Ptr32_LIST_ENTRY

            +0x004Blink:Ptr32_LIST_ENTRY

            }

            _List_ENTRY地址即(_LIST_ENTRY+0x000Flink)前?個_LDR_DATA_TABLE_ENTRY地址

            _LDR_DATA_TABLE_ENTRY第?個元素即_List_ENTRY

            _List_ENTRY前移1次到ntdll

            _List_ENTRY前移2次到Kernel32

            —————————————————————————————————*/

            tag_shellcode:

            MOVEAX,FS:[0x30];//EAX==_PEB

            MOVEAX,[EAX+0xC];//EAX==Ldr_PEB_LDR_DATA

            MOVEAX,[EAX+0xC];//EAX==_List_ENTRY==_LDR_DATA_TABLE_ENTRY

            JMPtag_checkname;

            tag_nextModule:

            MOVEAX,[EAX];//_LIST_ENTRY==_LIST_ENTRY->(+0x000)Flink==Previous_LDR_DATA_TABLE_ENTRYAddr

            tag_checkname:

            MOVEBX,DWORDPTRDS:[EAX+0x2C+0x4];//_UNICODE_STRING->BUFFER

            PUSHEAX;//SaveListAddr

            MOVEAX,DWORDPTRDS:[EAX+0x2C];//_UNICODE_STRING->Length(word)

            ANDEAX,0X0000FFFF;//SaveLoword:Length(word)

            SHREAX,2;//Length*2==bytes

            MOVECX,EAX;//repcmpstimes

            MOVESI,EBX;//

            POPEAX;//EAX==_List_ENTRY

            LEAEDI,wzKERNAL32;//ModuleNameinUNICODEL""

            REPCMPS;//

            JNZtag_nextModule;//

            MOVEAX,DWORDPTRDS:[EAX+0x18];//_LDR_DATA_TABLE_ENTRY->DllBa

            MOVKernalBaAddr,EAX;//[EBP-0x4]:PVOIDKernalBaAddr

            PUSHEAX;

            /*—————————————————————————————————

            Get

            pEAT

            pENT

            pEOT

            ——獲取導出表數據

            Sourceccode:

            typedefFARPROC(WINAPI*GETPROCADDR)(HMODULEhModule,LPCSTRlpProcName);

            typedefHMODULE(WINAPI*LOADLIBRARYA)(_In_LPCSTRlpName);

            GETPROCADDRg_getprocaddr;

            LOADLIBRARYAg_loadlibA;

            CHAR*ModuleBuf=(CHAR*)KernalBaAddr;

            PIMAGE_DOS_HEADERpDos=(PIMAGE_DOS_HEADER)ModuleBuf;

            PIMAGE_NT_HEADERSpNT=PIMAGE_NT_HEADERS(pDos->e_lfanew+ModuleBuf);

            PIMAGE_OPTIONAL_HEADERpOpt=&pNT->OptionalHeader;

            PIMAGE_DATA_DIRECTORYpExportDir=pOpt->DataDirectory+0;

            PIMAGE_EXPORT_DIRECTORYpExport=PIMAGE_趟怎么組詞 EXPORT_DIRECTORY(pExportDir->VirtualAddress+ModuleBuf);

            PDWORDpEAT=PDWORD(pExport->AddressOfFunctions+ModuleBuf);

            PDWORDpENT=PDWORD(pExport->AddressOfNames+ModuleBuf);

            PWORDpEOT=PWORD(pExport->AddressOfNameOrdinals+ModuleBuf);

            DWORDNumONames=pExport->NumberOfNames;

            —————————————————————————————————*/

            MOVEAX,[EAX+0x3C];//|pDosHeader->e_lfanew

            ADDEAX,KernalBaAddr;//|==pNTHeaderpDosHeader->e_lfanew+KernalBaAddr

            LEAEAX,[EAX+0x18];//&pNTHeader->OptionalHeader

            MOVEAX,[EAX+0x60];//OptionalHeader->DataDirectory->(+0x0)VirtualAddress

            ADDEAX,KernalBaAddr;//pExportDir=VirtualAddress+KernalBaAddr

            POPESI;//KernalBaAddr

            MOVEBX,[EAX+0x1C];//|pExportDir->AddressOfFunction

            MOVpEAT,ESI;//|+KernalBaAddr

            ADDpEAT,EBX;//|==[EBP-0x8]:PDWORDpEAT

            MOVEBX,[EAX+0x20];//|pExportDir->AddressOfNames

            MOVpENT,ESI;//|+KernalBaAddr

            ADDpENT,EBX;//|==[EBP-0xC]:PDWORDpENT

            MOVEBX,[EAX+0x24];//|pExportDir->AddressOfNameOrdinals

            MOVpEOT,ESI;//|+KernalBaAddr

            ADDpEOT,EBX;//|==[EBP-0x10]:PWORDpEOT

            MOVECX,[EAX+0x18];//DOWRDNumerOfNames

            /*—————————————————————————————————

            Get

            GetProcAddress();

            LoadLibraryA();

            ExitPro幼兒美術作品 cess();

            ——獲取關鍵函數地址

            sourceccode:

            for(INTi=0;i

            {

            CHAR*pName=pENT[i]+ModuleBuf;

            if(strcmp(pName,getProcAddr)==0)

            {

            g_getprocaddr=GETPROCADDR(pEAT[pEOT[i]]+(DWORD)ModuleBuf);

            g_loadlibA=LOADLIBRARYA(g_getprocaddr((HMODULE)ModuleBuf,loadLibA));

            break;

            }

            }

            —————————————————————————————————*/

            XOREAX,EAX;//INTi(EAX)=0;

            loop_EXT:

            CMPEAX,ECX;//EAX

            JNBtag_elfin;//

            PUSHEAX;//

            SHLEAX,2;//|EAX*4

            MOVEDI,pENT;//|pENT

            ADDEDI,EAX;//|&pENT[EAX]==pENT+EAX*4

            MOVEDI,[EDI];//|pENT[EAX]

            ADDEDI,ESI;//|==szName==pENT[EAX](RVA)+KernalBaAddr

            PUSHESI;//+KernalBaAddr

            LEAESI,szGetProcAddress;//[EDX+0x22]"GetProcAddress"

            PUSHECX;

            MOVECX,0xF;//LengthOfsz"GetProcAddress"

            repcmps;//strcmp(szName,"GetProcAddress")

            POPECX;//|

            POPESI;//|

            POPEAX;//|->跳轉與否均需?到,提前POP

            JZtag_foundproc;//if(strcmp()==0)JMPtag_foundproc

            INCEAX;//++i(EAX);

            JMPloop_EXT;//

            tag_foundproc://

            MOVECX,pEOT;//|[EBP-0x10]:PWORDpEOT

            SHLEAX,1;//|EAX*2(PWORDpEOT)

            ADDECX,EAX;//|&pEOT[pENT]

            MOVCX,WORDPTR[ECX];//|==pEOT[pENT]

            ANDECX,0x0000ffff;//SaveLoword

            SHLECX,2;//|ECX*4(PDWORDpEAT)

            MOVEAX,pEAT;//|EAX==pEAT[0]

            ADDEAX,ECX;//|==pEAT[ECX]==pEAT[0]+ECX

            MOVEAX,[EAX];//

            ADDEAX,ESI;//+KernalBaAddr

            MOVPGETPROCADDRESS,EAX;//[EBP-0x54]:GetProcAddress();

            /*————————————————————————

            LoadLibraryA=GetProcAddress(&,“LoadLibraryA”);

            ————————————————————————*/

            PUSHEDX;//-------------------------------------白酒的保質期 --GetProcAddress()ChangesEDX

            LEAECX,szLoadLibraryA;//|-&"LoadLibraryA"

            PUSHECX;//|-&"LoadLibraryA"LPCSTRlpProcName

            PUSHESI;//|-&DULEhModule

            CALLPGETPROCADDRESS;//|->CALLGetProcAddress();

            MOVPLOADLIBRARYA,EAX;//

            POPEDX;//ResumeEDX

            /*————————————————————————

            ExitProcess=GetProcAddress(&,“ExitProcess”);

            —————我的讀書心得 ———————————————————*/

            PUSHEDX;//---------------------------------------GetProcAddress()ChangesEDX

            LEAECX,szExitProcess;//&朋友過生日祝福語 "ExitProcess"

            PUSHECX;//|-&"ExitProcess"LPCSTRlpProcName

            PUSHESI;//|-&DULEhModule

            CALLPGETPROCADDRESS;//|->GetProcAddress();

            MOVPEXITPROCESS,EAX;//ExitProcess=RetVal

            POPEDX;//ResumeEDX

            //***************************************************Payload***************************************************

            /*————————————————————————

            MessageBoxA=GetProcAddress(LoadLibraryA(“”),“MessageBoxA”);

            ————————————————————————*/

            PUSHEDX;//---------------------------------------LoadLibraryA()ChangesEDX

            LEAECX,szUr32;//&""

            PUSHECX;//|-&""LPCSTRlpLibFileName

            CALLPLOADLIBRARYA;//|->LoadLibraryA();

            MOVUr32BaAddr,EAX;//Ur32BaAddr=RetVal

            POPEDX;//ResumeEDX

            PUSHEDX;//----------------------------洋蔥炒豆腐 -----------GetProcAddress()ChangesEDX

            LEAECX,szMessageBoxA;//|&"MessageBoxA"

            PUSHECX;//|-&"MessageBoxA"LPCSTRlpProcName

            PUSHEAX;//|-&DULEhModule

            CALLPGETPROCADDRESS;//|->GetProcAddress();

            MOVPMESSAGEBOX,EAX;//MessageBoxA=RetVal

            POPEDX;//ResumeEDX

            /*————————————————————————

            MessageBoxA(NULL,“Hello15PB”,“Hello15PB”,NULL);

            ————————————————————————*/

            LEAECX,szGreetings;//&"Hello15PB"

            XOREBX,EBX;//EBX==0(NULL)

            PUSHEBX;//|-NULLHWNDhWnd,

            PUSHECX;//|-&"Hello15PB"LPCSTRlpText,

            PUSHECX;//|-&"Hello15PB"LPCSTRlpCaption,

            PUSHEBX;//|-NULLUINTuType

            CALLPMESSAGEBOX;//|->MessageBoxA();

            //***************************************************Payload***************************************************

            /*—————————————————————————————————

            ExitProcess(NULL);

            —————————————————————————————————*/

            tag_Exit://

            XOREBX,EBX;//EBX==0

            PUSHEBX;//|-NULLUINTuExitCode

            CALLPEXITPROCESS;//|->ExitProcess();

            /*—————————————————————————————————

            Rerved

            —————————————————————————————————*/

            tag_elfin:

            addESP,0X5C;

            popad;

            }

            return0;

            }

            附:以上ShellCode的Hex形態

            //ShellCode_Hex_:定義控制臺應?程序的??點。

            charShellCode_Hex_01[]=

            "x55x8BxECx53x56x57x60x83xECx60xD9xEExD9x74x24xF4x5AxEBx64x4Bx00x45x00x52x00x4Ex00x45x00x4Cx00x33"

            "x00x32x00x2Ex00x44x00x4Cx00x4Cx00x00x47x65x74x50x72x6Fx63x41x64x64x72x65x73x73x00x4Cx6Fx61x64x4C"

            "x69x62x72x61x72x79x41x00x55x73x65x72x33x32x2Ex64x6Cx6Cx00x4Dx65x73x73x61x67x65x42x6Fx78x41x00x48"

            "x65x6Cx6Cx6Fx20x31x35x50x42x20x00x45x78x69x74x50x72x6Fx63x65x73x73x00x64xA1x30x00x00x00x8Bx40x0C"

            "x8Bx40x0CxEBx02x8Bx00x3Ex8Bx58x30x50x3Ex8Bx40x2Cx25xFFxFFx00x00xC1xE8x02x8BxC8x8BxF3x58x8Dx7Ax09"

            "xF3xA6x75xE1x3Ex8Bx40x18x89x45xFCx50x8Bx40x3Cx03x45xFCx8Dx40x18x8Bx40x60x03x45xFCx5Ex8Bx58x1Cx89"

            "x75xF8x01x5DxF8x8Bx58x20x89x75xF4x01x5DxF4x8Bx58x24x89x75xF0x01x5DxF0x8Bx48x18x33xC0x3BxC1x0Fx83"

            "x85x00x00x00x50xC1xE0x02x8Bx7DxF4x03xF8x8Bx3Fx03xFEx56x8Dx72x22x51xB9x0Fx00x00x00xF3xA6x59x5Ex58"

            "x74x03x40xEBxD7x8Bx4DxF0xD1xE0x03xC8x66x8Bx09x81xE1xFFxFFx00x00xC1xE1x02x8Bx45xF8x03xC1x8Bx00x03"

            "xC6x89x45xECx52x8Dx4Ax31x51x56xFFx55xECx89x45xE8x5Ax52x8Dx4Ax61x51x56xFFx55xECx89x45xDCx5Ax52x8D"

            "x4Ax3Ex51xFFx55xE8x89x45xE4x5Ax52x8Dx4Ax49x51x50xFFx55xECx89x45xE0x5Ax8Dx4Ax55x33xDBx53x51x51x53"

            "xFFx55xE0x33xDBx53xFFx55xDC";

            int_tmain(intargc,_TCHAR*argv[])

            {

            _asm

            {

            LEAEAX,ShellCode_Hex_01;

            pushEAX;

            RETN;黃沙百戰穿金甲

            }

            return0;

            }

            注:

            本文發布于:2023-03-27 10:47:45,感謝您對本站的認可!

            本文鏈接:http://www.newhan.cn/zhishi/a/1679885265155014.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:pent.doc

            本文 PDF 下載地址:pent.pdf

            上一篇:游戲筆記本
            下一篇:返回列表
            標簽:pent
            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            推薦文章
            排行榜
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 无码中文字幕乱在线观看| 国产偷国产偷亚洲高清人| 成人国产精品一区二区网站公司| 性欧美VIDEOFREE高清大喷水 | av中文字幕在线二区| 国产91精品一区二区亚洲| 亚洲天堂av免费在线看| 高清国产亚洲精品自在久久| 99热精品毛片全部国产无缓冲| 无码AV无码免费一区二区| 色综合天天综合网天天看片| 国产精品欧美一区二区三区不卡| 亚洲熟女乱综合一区二区三区 | 国产极品粉嫩福利姬萌白酱| 国产一区二区三区AV在线无码观看| 欧美最大胆的西西人体44| 九九热精品在线免费视频| 狼狼狼色精品视频在线播放| av免费一区二区三区不卡| 免费99视频| 国产精品大白天新婚身材 | 高清无码18| 中文字幕精品亚洲二区| 精品乱码一区二区三四五区| 精品素人AV无码不卡在线观看| 国产视频 视频一区二区| 天堂网在线.www天堂在线资源| 国产高清精品一区二区三区 | 精品人妻中文字幕av| 国产高清视频在线播放www色| 免费无码高H视频在线观看| 国产成人高清亚洲综合| 亚洲中文久久精品无码| 久久99热全是成人精品亚洲欧美精品| 色综合天天操| 国产仑乱无码内谢| 美欧日韩一区二区三区视频| 日本阿v片在线播放免费| 亚洲欧美日韩精品久久| 99精品国产一区二区三区不卡| 日韩成人大屁股内射喷水|