|
[原创]Delphi编写Ring3下的SSDT查看器
自己慢慢研究一下 |
|
|
|
[求助]写好的驱动程序如何在开机的时候让它自动运行
我也是这样想的,想来光靠驱动程序是无法实现的,就算是实现了,也很别扭,什么代码都要写在DriverEntry里,现在的思路是第一次加载运行时接收用户的参数,然后写入注册表或文件中,下次驱动被服务管理器自动加载了执行入口函数时就读取出参数或条件,然后传入Dispatch过程中去,这样似乎是唯一的解决方法了。。。。 |
|
[讨论]山寨版IceSword(KsBinSword )Bug汇报
兄弟人品不错,佩服!言辞多有得罪,请别介意,其实我是真的拿它来跟IceSword对比的,呵呵, 我从来都没有用过VC,以前用C#,就是讨厌VS的庞大体积和运行环境,所以放弃了,以后也不想再用VS,我下载下来的目的真的只是想试试其功能,其实如果换做我的话我都做不出兄弟你这个样子来的,能实现3分之一的功能就不错了,努力学习中。。。! |
|
[讨论]山寨版IceSword(KsBinSword )Bug汇报
不好意思,得罪了,东西发出来就会有人评价的,请作者别介意 |
|
[讨论]山寨版IceSword(KsBinSword )Bug汇报
奇怪,我就是用平常的方法试试而已啊, |
|
[讨论]山寨版IceSword(KsBinSword )Bug汇报
GDI++还要另外装吗?好像XPSP3自带的吧,我测试的机上没有装上面提到的字体,也没有启用ClearType,换别的有几个皮肤还是可以看清楚,显示器是SUMSUNG22寸宽屏,感觉应该不是显示器的问题,可能是作者Listview中的问题 其实我想说的是做技术的内容似乎更重要点,其它也没有别的意思,发贴后我都担心大家骂我呢,呵呵,BSOD一次所以我才发出来的,傻子都知道的问题,一个进程被结束后,其占用的内存空间基本上已释放,此时再去访问程序不出错才怪,其实做好意外处理也不会导致程序崩溃的,而此时用驱动方式去结束的话,驱动程序访问了一个不存在的内存地址BSOD似乎也是理所当然的事 |
|
[讨论]菜鸟也谈关于进程保护
这话说的也对,Windows本来就是以消息机制工作的,实时是相对而言的,但是我说的也仅仅只是在windows平台上相对来说要不中断执行的,比如后台实时记录某些重要信息,提供某种服务。。。我以前学的是C#,JAVA,跑CSDN比较多,底层比较少接触,所以。。现在才发现这上面不错!学到了好多东西! |
|
|
|
[讨论]菜鸟也谈关于进程保护
这个在有某些特殊要求不能中断执行的程序中是行不通的,我也可以实现让IceSword结束不了,并且不用非法手段,不用SSDTHOOK |
|
[原创]HOOK SSDT AND HOOK Shadow SSDT FOR DELPHI
我也是用Delphi 写驱动的 |
|
驱动编程中如何由已知的进程PID获得进程名,不用路径
@qihoocom 能否写出ZwQuerySystemInformation -> SystemProcessesInformation 的完整实现代码?让我们菜鸟也学习一下,谢谢!C的也可以, |
|
驱动编程中如何由已知的进程PID获得进程名,不用路径
不是我蓝啊,兄弟看看上面,我是转的人家的帖子,蓝的人是用的VC,呵呵, |
|
[分享]新年献礼--KmdKit4D 0.01正式版发布了(已更新到0.03版)
支持mickeylan ! |
|
驱动编程中如何由已知的进程PID获得进程名,不用路径
呵呵,谢谢您的好意,上面的代码我是转的人家的,我是用Pascal写的,不过感觉写驱动的时候Pascal跟C区别不大了,我的理解,能看懂C应该也能看懂Pascal,那个EPROCESS结构的定义可不是好玩的,90个类型信息 PEPROCESS = ^EPROCESS; EPROCESS = packed record Pcb: KPROCESS; {000} ExitStatus: NTSTATUS; {06C} LockEvent: KEVENT; {070} LockCount: DWORD; {080} d084: DWORD; {084} CreateTime: LARGE_INTEGER; {088} ExitTime: LARGE_INTEGER; {090} LockOwner: PVOID; {098} UniqueProcessId: DWORD; {09C} ActiveProcessLinks:LIST_ENTRY;{0A0} QuotaPeakPoolUsage: array [0..1] of DWORD; {NP, P 0A8} QuotaPoolUsage: array [0..1] of DWORD; {NP, P 0B0} PagefileUsage: DWORD; {0B8} CommitCharge: DWORD; {0BC} PeakPagefileUsage: DWORD; {0C0} PeakVirtualSize: DWORD; {0C4} VirtualSize: LARGE_INTEGER; {0C8} Vm: MMSUPPORT; {0D0} SessionProcessLinks: LIST_ENTRY; {118} DebugPort: PVOID; {120} ExceptionPort: PVOID; {124} ObjectTable: PVOID; {128} Token: PVOID; {12C} WorkingSetLock: FAST_MUTEX; {130} WorkingSetPage: DWORD; {150} ProcessOutswapEnabled:BOOLEAN;{154} ProcessOutswapped: BOOLEAN; {155} AddressSpaceInitialized: BOOLEAN; {156} AddressSpaceDeleted: BOOLEAN; {157} AddressCreationLock: FAST_MUTEX;{158} HyperSpaceLock: DWORD; {178} ForkInProgress: PVOID; {17C} VmOperation: WORD; {180} ForkWasSuccessful: BOOLEAN; {182} MmAgressiveWsTrimMask: BYTE; {183} VmOperationEvent: PVOID; {184} PaeTop: PVOID; {188} LastFaultCount: DWORD; {18C} ModifiedPageCount: DWORD; {190} VadRoot: PVOID; {194} VadHint: PVOID; {198} CloneRoot: PVOID; {19C} NumberOfPrivatePages: DWORD; {1A0} NumberOfLockedPages: DWORD; {1A4} NextPageColor: WORD; {1A8} ExitProcessCalled: BOOLEAN; {1AA} CreateProcessReported:BOOLEAN;{1AB} SectionHandle: PVOID; {1AC} Peb: PVOID; {1B0} SectionBaseAddress: PVOID; {1B4} QuotaBlock: PVOID; {1B8} LastThreadExitStatus:NTSTATUS;{1BC} WorkingSetWatch: PVOID; {1C0} Win32WindowStation: PVOID; {1C4} InheritedFromUniqueProcessId: PVOID;{1C8} GrantedAccess: DWORD; {1CC} DefaultHardErrorProcessing: DWORD;{HEM_* 1D0} LdtInformation: PVOID; {1D4} VadFreeHint: PVOID; {1D8} VdmObjects: PVOID; {1DC} DeviceMap: PVOID; {1E0} SessionId: DWORD; {1E4} PhysicalVadList: LIST_ENTRY; {1E8} Filter: QWORD; PaePageDirectoryPage: DWORD; {1F8} ImageFileName: array [0..15] of char;{1FC} VmTrimFaultValue: DWORD; {20C} SetTimerResolution: BYTE; {210} PriorityClass: BYTE; {211} SubSystemVersion: WORD; {212} Win32Process: PVOID; {214} Job: PVOID; {218 PTR EJOB} JobStatus: DWORD; {21C} JobLinks: LIST_ENTRY; {220} LockedPagesList: PVOID; {228} SecurityPort: PVOID; {22C} Wow64Process: PVOID; {230 PTR WOW64_PROCESS} ReadOperationCount: LARGE_INTEGER;{238} WriteOperationCount: LARGE_INTEGER;{240} OtherOperationCount: LARGE_INTEGER;{248} ReadTransferCount: LARGE_INTEGER;{250} WriteTransferCount: LARGE_INTEGER;{258} OtherTransferCount: LARGE_INTEGER;{260} CommitChargeLimit: DWORD; {268} CommitChargePeak: DWORD; {26C} ThreadListHead: LIST_ENTRY; {270} VadPhysicalPagesBitMap: PVOID;{278 PTR RTL_BITMAP} VadPhysicalPages: DWORD; {27C} AweLock: DWORD; {280} d284h: DWORD; {284 padding} end; |
|
驱动编程中如何由已知的进程PID获得进程名,不用路径
不错,答案正确,问题已解决! 感慨:感觉用Delphi写驱动真的是麻烦,特别是数据类型的定义我都差不多完全定义成C的形式了,在WIN32下哪有这么麻烦!Delphi自带的数据类型和内部函数在Ring0下几乎没有能用的了。谢谢看雪的大大们,这个地方不错,我喜欢! |
|
驱动编程中如何由已知的进程PID获得进程名,不用路径
我去试一下,WIN32下什么都不是问题,但在RING0下,什么都是问题,关键我是用的DELPHI,很多函数和申明都要自己定义,晕,又不想去啃C++了, |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值