|
[讨论]双开QQGAME
跟一下就知道了,修改一个dll文件的跳转就ok了。 |
|
[转帖]随意将函数执行权限提高到Ring0源代码
驱动代码见这里 http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=27086 和这里 http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=27088 还有这里 http://delphi.ktop.com.tw/board.php?cid=168&fid=912&tid=27089 |
|
|
|
|
|
|
|
《Windows编程循序渐进》已经上市,敬请关注(附样章)
要是书店有了去看看 |
|
[求助]KmdKit4D驱动编写软件怎么安装?
to:有点累了<>看看这个bin目录是否加入windows环境变量的path中。 |
|
[求助]KmdKit4D驱动编写软件怎么安装?
由VC驱动改写的。 unit RESSDT; interface uses nt_status, ntoskrnl, native, winioctl, fcall, macros; function _DriverEntry(pDriverObject: PDRIVER_OBJECT; RegistryPath: PUnicodeString): NTSTATUS; stdcall; implementation var DeviceName1, DeviceName2: UNICODE_STRING; const IOCTL_SETPROC = $0022E14B; function KeServiceDescriptorTable1: PServiceDescriptorEntry; begin Result := PPointer(@KeServiceDescriptorTable)^; end; function DispatchCreateClose(p_DeviceObject: PDEVICE_OBJECT; p_Irp: PIRP): NTSTATUS; stdcall; begin DbgPrint('DisPatchCreate!'); p_Irp^.IoStatus.Status := STATUS_SUCCESS; p_Irp^.IoStatus.Information := 0; IofCompleteRequest(p_Irp, IO_NO_INCREMENT); result := STATUS_SUCCESS; end; function DispatchControl(p_DeviceObject: PDEVICE_OBJECT; p_Irp: PIRP): NTSTATUS; stdcall; var status: NTSTATUS; pIrpStack: PIO_STACK_LOCATION; uIoControlCode: DWORD; pInputBuffer, pOutputBuffer: Pointer; uOutsize: Cardinal; //uInsize uIndex: ULONG; pBase: PULONG; begin status := STATUS_INVALID_DEVICE_REQUEST; ; pIrpStack := IoGetCurrentIrpStackLocation(p_Irp); {È¡IRPµÄstack locationµÄÖ¸Õë} uIoControlCode := pIrpStack^.Parameters.DeviceIoControl.IoControlCode; pInputBuffer := pIrpStack^.Parameters.DeviceIoControl.Type3InputBuffer; pOutputBuffer := p_Irp^.UserBuffer; // uInsize := pIrpStack^.Parameters.DeviceIoControl.InputBufferLength; uOutsize := pIrpStack^.Parameters.DeviceIoControl.OutputBufferLength; DbgPrint('DispatchDeviceControl Code:%X', uIoControlCode); case uIoControlCode of IOCTL_SETPROC: begin ProbeForRead(pInputBuffer, sizeof(ULONG), sizeof(ULONG)); ProbeForWrite(pOutputBuffer, sizeof(ULONG), sizeof(ULONG)); uIndex := PULONG(pInputBuffer)^; if (KeServiceDescriptorTable1^.NumberOfServices <= uIndex) then begin status := STATUS_INVALID_PARAMETER; Result := status; Exit; end; pBase := KeServiceDescriptorTable1^.ServiceTableBase; DbgPrint('0x%x 0x%x', uIndex, PULONG(pInputBuffer)^); asm //¹ØÖÐ¶Ï cli mov eax,cr0 and eax,not $10000 mov cr0,eax end; // PULONG(DWORD(pBase) + uIndex)^ := PULONG(pInputBuffer)^; PULONG(DWORD(pBase) + uIndex * SizeOf(ULONG))^ := PULONG(pInputBuffer)^; // Inc(pBase, uIndex); // pBase^ := PULONG(pInputBuffer)^; asm //¿ªÖÐ¶Ï mov eax,cr0 or eax,$10000 mov cr0,eax sti end; status := STATUS_SUCCESS; end; else begin Result := status; Exit; end; end; if status = STATUS_SUCCESS then p_Irp^.IoStatus.Information := uOutsize else p_Irp^.IoStatus.Information := 0; p_Irp^.IoStatus.Status := status; IoCompleteRequest(p_Irp, IO_NO_INCREMENT); Result := status; end; procedure DriverUnload(p_DriverObject: PDRIVER_OBJECT); stdcall; begin if IoDeleteSymbolicLink(@DeviceName2) <> STATUS_SUCCESS then DbgPrint('DeleteSymbolicLink Fail!'); IoDeleteDevice(p_DriverObject^.DeviceObject); end; function _DriverEntry(pDriverObject: PDRIVER_OBJECT; RegistryPath: PUnicodeString): NTSTATUS; stdcall; var status: NTSTATUS; pDeviceObject: TDeviceObject; begin asm pushad xor eax, ebx sub ebx, ecx add ecx, edx xor ebx, eax popad end; status := STATUS_DEVICE_CONFIGURATION_ERROR; RtlInitUnicodeString(DeviceName1, '\Device\RESSDT'); RtlInitUnicodeString(DeviceName2, '\??\RESSDTDOS'); if (IoCreateDevice(pDriverObject, 0, @DeviceName1, FILE_DEVICE_UNKNOWN, 0, FALSE, pDeviceObject) = STATUS_SUCCESS) then begin if (IoCreateSymbolicLink(@DeviceName2, @DeviceName1) = STATUS_SUCCESS) then begin pDriverObject^.MajorFunction[IRP_MJ_CREATE] := @DispatchCreateClose; pDriverObject^.MajorFunction[IRP_MJ_CLOSE] := @DispatchCreateClose; pDriverObject^.MajorFunction[IRP_MJ_DEVICE_CONTROL] := @DispatchControl; pDriverObject^.DriverUnload := @DriverUnload; status := STATUS_SUCCESS; end else begin DbgPrint('IoCreateSymbolicLink fail!'); IoDeleteDevice(@pDeviceObject); end; end else DbgPrint('IoCreateDevice Fail!'); result := status; end; end. |
|
[求助]KmdKit4D驱动编写软件怎么安装?
慢慢摸索吧。 make在delphi7目录的bin目录中,其中这个bin目录已经加入windows环境变量的path中了,所以可以直接运行make; delphi的搜索目录见下图 |
|
[求助]KmdKit4D驱动编写软件怎么安装?
首先将dll文件和exe放入delphi7目录的bin目录中,然后将include目录和source目录加入delphi的搜索目录中,在delphi的tool菜单下和加入包差不多。 现在编辑好pas文件后保存,在放了pas文件的目录中创建Makefile,可以用其他的修改一下 然后从cmd中到达这个目录,输入make就可以自动编译了 |
|
[注意]看雪论坛鼎力打造---2008年力作《加密与解密》(第三版)[2008年6月上旬上市]
最希望看的一章: //*************************** 第16章 外壳编写基础(Hying编写)35 16.1 外壳的结构 16.2 加壳主程序 16.2.1 判断文件是否为PE格式 16.2.2 文件基本数据读入 16.2.3 附加数据读取 16.2.4 输入表处理 16.2.5 重定位表处理 16.2.6 文件的压缩 16.2.7 资源数据处理 16.2.8 区块的融合 16.3 外壳部分编写 16.3.1 外壳的加载过程 16.3.2 自建输入表 16.3.4 外壳引导段 16.3.5 外壳第二段 16.4 将外壳部分添加至原程序 //*************************** 如果看完要是能写出一个压缩壳,我就买书。 |
|
|
|
|
|
[分享]新年献礼--KmdKit4D 0.01正式版发布了(已更新到0.03版)
要是做好,比较方便了。wait... |
|
[分享]新年献礼--KmdKit4D 0.01正式版发布了(已更新到0.03版)
工具rmcoff要不要开源一下? |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值