|
|
|
|
|
|
|
[求助]SPOOLSV进程注入的问题
如果每一步都成功,那可能是hookxxx.dll的入口执行异常,导致加载失败。也可能是所需支持库无法被加载等等。 |
|
这段代码为什么会蓝屏?
unsigned char idt[8]; __asm sidt fword ptr idt; unsigned long lpidt = *(unsigned long*)&idt[2]; KdPrint(("IDT==0x%x\n",lpidt)); unsigned short tmp = *(unsigned short*)((lpidt+8*9)+6); KdPrint(("int 9==0x%x\n",(unsigned long)tmp)); tmp&=0xFF00; if(tmp!=0) { unsigned short tmp2 = *(unsigned short*)((lpidt+8*0xE)+6); KdPrint(("int E==0x%x\n",(unsigned long)tmp2)); if(tmp2&0xFF00 != tmp) { *(unsigned short*)((lpidt+8*0xE)+6) = 0; KdPrint(("done\n")); } } |
|
[解决]vs2010配置驱动开发
因为VS默认都是编译成C++代码,而ntddk.h是需要以C编译的。才能把里面的函数啊什么的编译成:Function@4这样的形式。否则编译成C++代码会变成Function@YZX这样子。 我用VS2008编译驱动,但由于不在公司,无法把相关配置传上来。 |
|
|
|
[解决]vs2010配置驱动开发
SerialFilter.cpp中有没有正确包含了“ntddk.h”呢?好像你没有用extern "C" {#include <ntddk.h>};呢 |
|
[求助]F8 步过call 异常, F9 运行正常, 是什么问题?
004FF0A8 E8 08000000 CALL GuJian.004FF0B5 ;//问题出在这里 004FF0AD BA 62DBB825 MOV EDX,25B8DB62 004FF0B2 4D DEC EBP 004FF0B3 004FF0B4 004FF0B5 可以看到,call 4FF0B5,而此时EIP==04FF0A8,就在近处。剩下的3 byte 指令你虽然没有贴出来,但是明显函数没有结束的迹象。 所以,这明显的是一条花指令。如果你用F8,4FF0AD将被修改成CC,于是可能被检测到哦。。。 |
|
[讨论][讨论] 知道SSDT真实地址后。。能否R3下直接调用那个地址!!
楼主也是在前进过程中有一些自我思考,好事。 只是目前这个问题的答案是:不行。 所以楼主可以去搜索为什么不行,如何才行。这样的答案。 于是,能前进,能强大 |
|
[原创]浅析QQ炫舞6开挂
楼主本意是封装,结果反而把这封装拆散了,而且只HOOK SSDT,有一定局限性。 其实完全可以做个通用封装:以下给出C源码:
|
|
[求助]程序反汇编后,出现很多源文件的名称,是怎么回事?
同意。是因为link时有/debug选项(即使是release版本也有),所以生成了pdb文件,IDA在反汇编时加载了这个pdb。如果别人没有这个pdb,你无须担心会泄露信息。 |
|
[求助]读取 SSDT 表原始函数地址 读不出来。。地址都是0
不知道你这么实现为什么没有结果?? typedef struct _SERVICE_DESCRIPTOR_TABLE { PVOID ServiceTableBase; PULONG ServiceCounterTableBase; ULONG NumberOfService; ULONG ParamTableBase; }SERVICE_DESCRIPTOR_TABLE,*PSERVICE_DESCRIPTOR_TABLE; extern "C" { extern PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable; }; bool hookSSDT(PWSTR ServiceName) { ring0_dbgout errs; PVOID ServiceAddr = 0; size_t SerNo = (size_t)ServiceName; const unsigned long* lpstb = (unsigned long*)KeServiceDescriptorTable->ServiceTableBase; const size_t SerMax = KeServiceDescriptorTable->NumberOfService; errs<<"SSDT个数:"<<SerMax<<",位置:"<<lpstb<<endd; if((unsigned long)ServiceName > SerMax) { UNICODE_STRING SerName; RtlInitUnicodeString(&SerName,ServiceName); ServiceAddr = [COLOR="Red"]MmGetSystemRoutineAddress[/COLOR](&SerName); errs<<"指定服务地址:"<<ServiceAddr<<endd; for(int i = 0;i<SerMax;++i) { if(lpstb[i]==(unsigned long)ServiceAddr) { errs<<"找到序号:"<<i<<endd; SerNo = i; break; } } } if(SerNo > KeServiceDescriptorTable->NumberOfService)return false; ................................. return true; } |
|
[原创]利用EXE中的数据与代码
十分荣幸,xiongshi兄弟2007年潜水至今第一帖回复到了这里。。。 让我再次向你解释:原EXE是不运行的。比如:我有一个病毒,只是想利用内部的算法,那不可能让它运行起来让我插DLL吧。。。 而经过处理后的CC也是无法独立运行的,需要由经过处理的HH加载之。除了某些需要初始化的全局对象无法处理。那些静态的全局函数与数据,包含API调用等等,都保持原有状态与位置。使用不会出错。 谢谢 |
|
[原创]hook类[有码]
采用0xE8 call做inline hook,有个致命问题,改变堆栈。 为了在inline hook code里轻易获得跳转来源,方便了这里,却引进了这个致命问题。如果覆盖的5 byte中的代码有操作堆栈,可能出现不可预料问题。 楼主可以考虑对每个hook实现针对性的inline hook code,实现起来还算简单。加油。 |
|
|
|
[求助]调用EXE中的函数......
那不如就做成plugin.dll喽 |
|
[求助]调用EXE中的函数......
在贴子http://bbs.pediy.com/showthread.php?t=113450的基础上, 修改后CC的一些导入库可能存在一些问题,会出现无法加载的情况。而且内部如果使用了HH的硬地址等,就无法独立运行了。 如果你需要做初始化,建议你在修改PE入口时,LoadLibrary前,先调用初始化代码,或许可以解决你的问题。 修改后可以使用API及系统资源,至于能不能使用窗口函数什么的,不大确定。 只不过调用的初始化代码不能是原先的入口了,而且现在IDE做出来的EXE,入口代码都是由编译器生成的,也的确做了一堆环境初始化工作,再调用main函数。结束后释放资源,调用ExitProcess。 既然CC、HH是你自己做的,那不如就把代码改造成DLL重新编译一遍呗,何必自找麻烦哩。初始化的确是件麻烦事。。。 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值