首页
论坛
课程
招聘
使用CreateRemoteThread执行ShellCode代码的一个问题
2020-9-17 14:56 1703

使用CreateRemoteThread执行ShellCode代码的一个问题

2020-9-17 14:56
1703

如题,使用CreateRemoteThread来执行一段弹窗的ShellCode却一直报错。
ShellCode目的是使用MessageBoxA进行弹窗,其主要内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
__declspec (naked)
void shellCodeFun(void) {
    __asm {
        call L001;
 
        L001:
        pop ebx;
        sub ebx, 5;
        push 0;
        push dword ptr ds : [ebx + 0x24] ; 
        push dword ptr ds : [ebx + 0x20] ;
        push 0;
        call dword ptr ds : [ebx + 0x28] ;
        nop;
    }
}

注入自己写的目标程序后,通过32dbg调试找到了报错的地方,正是这段ShellCode代码的第一句call + 标号产生了异常:

很明显在32dbg看到,原本visual studio中写的内联汇编call + 标号却变成了call + 一段数字(地址)。这种表达方式在似乎从来没见过的...
32dbg下面的异常代码为:
exception_access_violation 0xc0000005


看雪招聘平台创建简历并且简历完整度达到90%及以上可获得500看雪币~

收藏
点赞0
打赏
分享
最新回复 (6)
雪    币: 10067
活跃值: 活跃值 (2188)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tDasm 活跃值 2020-9-17 15:39
2
0
1、windows有shell code这一说法吗?linux、unix才有这个说法。而且你这个代码明显不是shell code。
2、call + 标号 应该不会异常。应该是ebx + 0x24、 ebx + 0x20这些数据部分才可能读取异常。如果你确认是call + 标号产生了异常,那应该是dep保护,你在数据区执行代码。
雪    币: 3522
活跃值: 活跃值 (3264)
能力值: ( LV9,RANK:150 )
在线值:
发帖
回帖
粉丝
psycongroo 活跃值 2 2020-9-17 16:42
3
0
tDasm 1、windows有shell code这一说法吗?linux、unix才有这个说法。而且你这个代码明显不是shell code。 2、call + 标号 应该不会异常。应该是ebx + 0x24、 ...
十分感谢Dasm的回答。
1.对于shell code的定义说实话我也不太清楚,上面代码大多数是仿造书中的写法的,因为书上都把其叫做shell code,所以我也这么说的。
2.确实是数据保护的问题,这个报错是因为我使用VirtualAllocEx传递了PAGE_READWRITE,在修改为PAGE_EXECUTE_READWRITE问题解决了。
雪    币: 15641
活跃值: 活跃值 (2048)
能力值: (RANK:648 )
在线值:
发帖
回帖
粉丝
KevinsBobo 活跃值 8 2020-9-17 17:05
4
0

另外根据楼主的帖子看到 ShellCode 并不完整,ebx + 0x20 后的数据都没有,根据代码分析这部分数据应该是字符串数据和 MessageBoxA 的地址。

最后于 2020-9-17 17:08 被KevinsBobo编辑 ,原因:
雪    币: 495
活跃值: 活跃值 (121)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
养乐多A 活跃值 2020-9-18 13:46
5
0
MDebug 写完用这个工具调试
雪    币: 134
活跃值: 活跃值 (106)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kakahu 活跃值 2020-9-25 09:50
6
0
印象中shellcode是没有绝对地址的~kernel32的地址都要自己找~
雪    币: 134
活跃值: 活跃值 (106)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kakahu 活跃值 2020-9-25 10:13
7
0
MessageBoxA(NULL,"TEST","TEST",0x000040);  (x64)
"\x40\x55\x48\x8B\xEC\x48\x83\xEC\x50\xC7\x45\xD0\x55\x53\x45\x52"
"\xC7\x45\xD4\x33\x32\x2E\x64\x66\xC7\x45\xD8\x6C\x6C\xC6\x45\xDA"
"\x00\xC7\x45\xE0\x4D\x65\x73\x73\xC7\x45\xE4\x61\x67\x65\x42\xC7"
"\x45\xE8\x6F\x78\x41\x00\x65\x48\x8B\x04\x25\x60\x00\x00\x00\x48"
"\x8B\x48\x18\x48\x8B\x49\x30\xEB\x03\x48\x8B\x09\x48\x8B\x41\x40"
"\x66\x83\x78\x18\x00\x75\xF2\x48\x8B\x49\x10\x48\x8D\x55\xF0\xC7"
"\x45\xF0\x4C\x6F\x61\x64\xC7\x45\xF4\x4C\x69\x62\x72\xC7\x45\xF8"
"\x61\x72\x79\x41\xC6\x45\xFC\x00\xE8\x37\x00\x00\x00\x48\x8D\x4D"
"\xD0\xFF\xD0\x48\x8D\x55\xE0\x48\x8B\xC8\xE8\x25\x00\x00\x00\x4C"
"\x8D\x45\x10\x48\x8D\x55\x10\x41\xB9\x40\x00\x00\x00\x33\xC9\xC7"
"\x45\x10\x54\x45\x53\x54\xC6\x45\x14\x00\xFF\xD0\x48\x83\xC4\x50"
"\x5D\xC3\xCC\xCC\x48\x89\x5C\x24\x08\x48\x89\x74\x24\x10\x57\x48"
"\x83\xEC\x20\x65\x48\x8B\x04\x25\x60\x00\x00\x00\x4C\x8B\xDA\x48"
"\x8B\xD9\x4C\x8B\x40\x18\x4D\x8B\x48\x30\x45\x33\xC0\xEB\x03\x4D"
"\x8B\x09\x49\x8B\x41\x40\x66\x44\x39\x40\x18\x75\xF2\x49\x8B\x51"
"\x10\x4D\x8B\xC8\x48\x63\x42\x3C\x8B\x8C\x10\x88\x00\x00\x00\x48"
"\x03\xCA\x44\x8B\x51\x20\x8B\x79\x24\x8B\x71\x1C\x8B\x49\x18\x4C"
"\x03\xD2\x48\x03\xFA\x48\x03\xF2\x85\xC9\x74\x75\x41\x8B\x02\x48"
"\x03\xC2\x80\x38\x47\x75\x4E\x80\x78\x01\x65\x75\x48\x80\x78\x02"
"\x74\x75\x42\x80\x78\x03\x50\x75\x3C\x80\x78\x04\x72\x75\x36\x80"
"\x78\x05\x6F\x75\x30\x80\x78\x06\x63\x75\x2A\x80\x78\x07\x41\x75"
"\x24\x80\x78\x08\x64\x75\x1E\x80\x78\x09\x64\x75\x18\x80\x78\x0A"
"\x72\x75\x12\x80\x78\x0B\x65\x75\x0C\x80\x78\x0C\x73\x75\x06\x80"
"\x78\x0D\x73\x74\x0E\x41\xFF\xC0\x49\x83\xC2\x04\x44\x3B\xC1\x73"
"\x10\xEB\x99\x41\x8B\xC0\x0F\xB7\x0C\x47\x44\x8B\x0C\x8E\x4C\x03"
"\xCA\x49\x8B\xD3\x48\x8B\xCB\x48\x8B\x5C\x24\x30\x48\x8B\x74\x24"
"\x38\x48\x83\xC4\x20\x5F\x49\xFF\xE1\xCC\xCC\xCC"
游客
登录 | 注册 方可回帖
返回