注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫正正的博客

熊猫正正的天空

 
 
 

日志

 
 

ShellCode代码  

2012-03-29 11:55:44|  分类: Win32汇编写病毒 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
void ShellCode()
{
__asm{
//_emit 0xCC
jmp end
start:
        pop edx;            //得到字符串的地址
        //获得kernel32的基地址
mov eax,fs:0x30
mov eax,[eax+0xc]
mov eax,[eax+0x1c]
mov eax,[eax]
mov eax,[eax+0x8]
        push eax              //保存kernel32的基地址
        //查找LoadlibraryA API
        push edx
push 0xC
call getaddr      //LoadlibraryA
        pop  ebx
       
add  ebx,0xD            //定位到"user32"
push ebx
call eax             //调用LoadLibraryA("user32"),加载user32.dll;
       
//查找 MessageboxA
add  ebx,0x7
push ebx
        push 0xB
call getaddr            //MessageBoxA
        pop  ebx
    
add ebx,0x18           //定位到"OK"
push 0
push ebx
push ebx
push 0
        call eax                //MessageBoxA(NULL,"OK","OK",NULL);
       
        //ExitProcess(0)
mov edx,0xC
        pop eax
        sub ebx,edx             //定位"ExitProcess"
        push ebx
        push edx
call getaddr
        call  eax
        //api 的查找
getaddr:
mov ebx,eax
add eax,0x3C;        //定位e_lfanew
mov eax,[eax];
add eax,ebx;         //定位NT头
cmp [eax],0x00004550;  //判断是否为PE字符
jne NotFound
mov eax,[eax+0x78];      //定位导出表
add eax,ebx
push eax
mov ecx,eax;     //ecx指向导出表
mov ecx,[ecx+0x14];     //得到dll里共有多少个导出函数
mov eax,[eax+0x20];     //得到函数名的地址
add eax,ebx
push ebp
mov ebp,eax;       //ebp保存函数名指针的数组
xor edx,edx;       //edx放入函数的索引
FindLoop:
push ecx
mov  eax,[eax];     //取出名称的RVA
add  eax,ebx;       //换算为VA
mov  edi,eax;        //放入edi之中用于字符串的比对
mov  esi,[esp+0x14];  //取出堆栈中的字符
mov  ecx,[esp+0x10];  //取出函数的字串的个数
cld
rep cmpsb
jne FindNext
add esp,4;           //pop ecx
mov eax,[esp+0x4];    //得到导出表的地址  相当于 pop eax
mov eax,[eax+0x1C];   //得到AddressOfFunctions;
add eax,ebx;           //转换为VA
shl edx,2;             //索引*函数长度(因为函数长度默认为4字节)
add eax,edx;           //导出函数的第一个函数的地址+所要寻找函数所距离这个地址的长度
mov eax,[eax];         //取出其内容  RVA
add eax,ebx
jmp Found
FindNext:                    //没有找到继续寻找
inc edx
add ebp,4
mov eax,ebp
pop ecx
loop FindLoop
NotFound:
xor eax,eax
Found:
pop ebp
pop ecx
        ret 4;
end:
   call start
_emit 'L';
_emit 'o';
_emit 'a';
_emit 'd';
_emit 'L';
_emit 'i';
_emit 'b';
_emit 'r';
_emit 'a';
_emit 'r';
_emit 'y';
_emit 'A';
_emit 0x00;
_emit 'u';
_emit 's';
_emit 'e';
_emit 'r';
_emit '3';
_emit '2';
_emit 0x00;
_emit 'M';
_emit 'e';
_emit 's';
_emit 's';
_emit 'a';
_emit 'g';
_emit 'e';
_emit 'B';
_emit 'o';
_emit 'x';
_emit 'A';
_emit 0x00;
_emit 'E';
_emit 'x';
_emit 'i';
_emit 't';
_emit 'P';
_emit 'r';
_emit 'o';
_emit 'c';
_emit 'e';
_emit 's';
_emit 's';
_emit 0x00;
_emit 'O';
_emit 'K';
_emit 0x00;
}
}
  评论这张
 
阅读(40)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017