avatar

目录
实现弹出计算器的Shellcode

实现弹出计算器的Shellcode

使用Winexec函数弹出计算器

先用Visual Studio写一个弹计算器

c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<stdio.h>
#include <windows.h>
int main()
{
__asm
{
push ebp
mov ebp, esp
//WinExec("calc.exe", 5)
xor eax, eax //eax清0
push eax //“0x00”,用于分割字符串
mov eax, 0x6578652e //字符串".exe"
push eax
mov eax, 0x636c6163 //字符串"calc"
push eax
mov eax, esp
push 5 //arg2=SW_SHOW
push eax //arg1="calc.exe"
mov eax, 0x???????? //WinExec的地址
call eax
//ExitProcess(0)
xor eax, eax
push eax//arg1=0
mov eax, 0x???????? //ExitProcess的地址
call eax

mov esp, ebp
pop ebp
}
return 0;
}

参数的calc、.exe可以通过转HEX得到

后面需要得到Kernel32.dll中Winexec和Exitprocess的地址

Kernel32.dll在PE工具中,基址的77DE0000

但在实际运行后,Kernel32.dll的基址变成了76080000,所以Winexec和Exitprocess的地址要通过76080000计算

在Kernel32.dll的导出表中找到Winexec和Exitprocess的偏移,加上基址,得到两个函数的地址

计算出Winexec的地址为0x7610edb2,Exitprocess的地址为0x760dbbe2

c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<stdio.h>
#include <windows.h>
int main()
{
__asm
{
push ebp
mov ebp, esp
//WinExec("calc.exe", 5)
xor eax, eax //eax清0
push eax //“0x00”,用于分割字符串
mov eax, 0x6578652e//".exe"
push eax
mov eax, 0x636c6163//"calc"
push eax
mov eax, esp
push 5//arg2=SW_SHOW
push eax//arg1="calc.exe"
mov eax, 0x7610edb2//WinExec的地址
call eax
//ExitProcess(0)
xor eax, eax
push eax//arg1=0
mov eax, 0x760dbbe2//ExitProcess的地址
call eax

mov esp, ebp
pop ebp
}
return 0;
}

编译后,运行可以弹出计算器

载入OD,找到Main函数,选中代码,右键-二进制复制

复制后在十六进制工具里粘贴出来就能得到弹出计算器的Shellcode

c
1
2
3
4
5
6
7
#include <stdio.h>
#include <windows.h>
int main(void)
{
char shellcode[] = "\x55\x8B\xEC\x33\xC0\x50\xB8\x2E\x65\x78\x65\x50\xB8\x63\x61\x6C\x63\x50\x8B\xC4\x6A\x05\x50\xB8\xB2\xED\x10\x76\xFF\xD0\x33\xC0\x50\xB8\xE2\xBB\x0D\x76\xFF\xD0";
((void(*)(void))&shellcode)();
}

由于Win7系统引入了ASLR机制,因此我们不能在shellcode中使用固定的内存地址,所以上面的方法不能在WIN7下使用

文章作者: Yenn_
文章链接: https://0xdf1001f.github.io/2020/06/06/%E5%AE%9E%E7%8E%B0%E5%BC%B9%E5%87%BA%E8%AE%A1%E7%AE%97%E5%99%A8%E7%9A%84Shellcode/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Wei's Blog

评论