| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 522 人关注过本帖
标题:制作 shellcode 的艰辛旅途
只看楼主 加入收藏
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
结帖率:59.52%
收藏
 问题点数:0 回复次数:2 
制作 shellcode 的艰辛旅途
程序代码:
#include "stdafx.h"
#include "windows.h"
#define var_MessageBox    4
#define var_ExitProcess   8
#define var_LoadLibrary   12
#define var_DllBase          16
#define var_Export          20
#define var_Libname       28

int _tmain(int argc, _TCHAR* argv[])
{
    _asm{
        push ebp
        mov  ebp,esp
        sub  esp,0D4h
        mov  dword ptr [ebp-var_MessageBox],0x1e380a6a
        mov  dword ptr [ebp-var_ExitProcess],0x4fd18963
        mov  dword ptr [ebp-var_LoadLibrary],0xc0d83287
        mov  dword ptr [ebp-var_Libname],0x72657375
        mov  dword ptr [ebp-24],0x3233

        mov eax,fs:[0x30]
        mov eax,[eax+0x0c]
        mov eax,[eax+0x1c]
        mov eax,[eax]
        mov eax,[eax+08h]
        mov [ebp-var_DllBase],eax

        mov esi,ebp
        sub esi,12
Find_Next:
        lodsd
        cmp eax,0x1e380a6a
        jne Find_lib_Function
        push 0
        push 0
        mov eax,ebp
        sub eax,28
        push eax
        call [ebp-var_LoadLibrary]
        mov [ebp-var_DllBase],eax


Find_lib_Function:
        mov eax,[ebp-var_DllBase]
        add eax,[eax+03ch]
        mov eax,[eax+078h]
        add eax,[ebp-var_DllBase]

        mov [ebp-var_Export],eax
        
        mov ecx,[eax+018h]
        mov eax,[eax+020h]
        add eax,[ebp-var_DllBase]

        xor edx,edx
Next_Loop:
        cmp edx,ecx
        jge nofind
        mov edi,[eax]
        add edi,[ebp-var_DllBase]
        xor ebx,ebx
Get_Hash:
        cmp byte ptr [edi],0
        je  xxx
        ror ebx,7
        push eax
        movzx eax,byte ptr [edi]
        add ebx,eax
        pop eax
        inc edi
        jmp Get_Hash
xxx:
        cmp ebx,dword ptr [esi-4]
        jz  find
        add eax,4
        inc edx
        jmp Next_Loop


find:
        mov eax,[ebp-var_Export]
        mov ecx,[eax+024h]
        add ecx,[ebp-var_DllBase]
        shl edx,1
        add ecx,edx
        movzx ecx,word ptr [ecx]
        shl ecx,2

        mov eax,[eax+01ch]
        add eax,[ebp-var_DllBase]
        add eax,ecx
        mov eax,[eax]
        add eax,[ebp-var_DllBase]
        mov [esi-4],eax

        cmp ebx,0x1e380a6a
        jz  call_function
        jmp Find_Next
call_function:
        push 0
        push 0
        mov eax,ebp
        sub eax,28
        push eax
        push 0
        call [ebp-var_MessageBox]
        push 0
        call [ebp-var_ExitProcess]

nofind:

    }
    printf("hello,word");
    getchar();
    return 0;
}


下面是可运行的shellcode
程序代码:
#include "stdafx.h"
#include <windows.h>  
#include <stdio.h>  
int main()  
{  
    byte shellcode[] = 
"\x55\x8B\xEC\x81\xEC\xD4\x00\x00\x00\xC7\x45\xFC\x6A\x0A\x38\x1E\xC7\x45\xF8\x63\x89\xD1\x4F\xC7\x45\xF4\x87\x32\xD8\xC0\xC7\x45"
"\xE4\x75\x73\x65\x72\xC7\x45\xE8\x33\x32\x00\x00\x64\xA1\x30\x00\x00\x00\x8B\x40\x0C\x8B\x40\x1C\x8B\x00\x8B\x40\x08\x89\x45\xF0"
"\x8B\xF5\x83\xEE\x0C\xAD\x3D\x6A\x0A\x38\x1E\x75\x10\x6A\x00\x6A\x00\x8B\xC5\x83\xE8\x1C\x50\xFF\x55\xF4\x89\x45\xF0\x8B\x45\xF0"
"\x03\x40\x3C\x8B\x40\x78\x03\x45\xF0\x89\x45\xEC\x8B\x48\x18\x8B\x40\x20\x03\x45\xF0\x33\xD2\x3B\xD1\x7D\x68\x8B\x38\x03\x7D\xF0"
"\x33\xDB\x80\x3F\x00\x74\x0D\xC1\xCB\x07\x50\x0F\xB6\x07\x03\xD8\x58\x47\xEB\xEE\x3B\x5E\xFC\x74\x06\x83\xC0\x04\x42\xEB\xD8\x8B"
"\x45\xEC\x8B\x48\x24\x03\x4D\xF0\xD1\xE2\x03\xCA\x0F\xB7\x09\xC1\xE1\x02\x8B\x40\x1C\x03\x45\xF0\x03\xC1\x8B\x00\x03\x45\xF0\x89"
"\x46\xFC\x81\xFB\x6A\x0A\x38\x1E\x74\x05\xE9\x76\xFF\xFF\xFF\x6A\x00\x6A\x00\x8B\xC5\x83\xE8\x1C\x50\x6A\x00\xFF\x55\xFC\x6A\x00"
"\xFF\x55\xF8"; 
    printf("size of shellcode: %d/n", sizeof(shellcode));  
    system("pause");  
    byte *bCall=shellcode;  
    DWORD dwOld=0;  
    VirtualProtect(bCall,sizeof(bCall),PAGE_EXECUTE_READWRITE,&dwOld);  
    typedef void (WINAPI *pGGCall)();  
    pGGCall pss=(pGGCall)&shellcode[0];  
    pss();  
    return 0;  
} 


[ 本帖最后由 zhu224039 于 2014-6-7 15:22 编辑 ]
搜索更多相关主题的帖子: 制作 
2014-06-07 11:18
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
硬编码?
2014-06-07 11:23
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
回复 2 楼 zklhp
不是 你想错了,是对函数名  进行了hash
xor ebx,ebx
ror ebx,7
add ebx,char

我要成为嘿嘿的黑客,替天行道
2014-06-07 15:24
快速回复:制作 shellcode 的艰辛旅途
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020205 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved