77范文网 - 专业文章范例文档资料分享平台

dnf辅助外挂C++源代码(仅供学习参考)(2)

来源:网络收集 时间:2019-04-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

invoke ModifyFuncAboutDbg, Dep_1, 9078498bh, 0c9859090h ;invoke ModifyFuncAboutDbg, Dmpp_2, 8bc0950fh, 8b90c032h

mov eax, pDriverObject

assume eax : ptr DRIVER_OBJECT

mov [eax].DriverUnload, offset DriverUnload assume eax : nothing

mov eax, cr0

or eax, 10000h mov cr0, eax sti

mov eax, STATUS_SUCCESS ret

DriverEntry endp end DriverEntry

绕过NtOpenProcess,NtOpenThread,KiAttachProcess

以及最重要的,不能让它检测到有硬件断点,所以要对CONTEXT做一些伪装,把真实的DR0~DR7的数据存放到别的地方,OD访问的时候返回正确的数据,如果是DNF要获取上下文,就稍微做下手脚 代码: .386

.model flat, stdcall option casemap:none

include dnf_hook.inc

.const

NtOpenProcessHookAddr equ 805cc626h NtOpenProcessRetAddr equ 805cc631h NtOpenProcessNoChange equ 805cc62ch

NtOpenThreadHookAddr equ 805cc8a8h NtOpenThreadRetAddr equ 805cc8b3h NtOpenThreadNoChange equ 805cc8aeh

KiAttachProcessAddr equ 804f9a08h KiAttachProcessRetAddr equ 804f9a0fh

ObOpenObjectByPointerAddr equ 805bcc78h

NtGetContextThreadAddr equ 805d2551h;805c76a3h NtGetContextThreadRetAddr equ 805c76a7h;805d2555h .data

nameOffset dd ? threadCxtLink dd 0 tmpLink dd ?

.code

GetProcessName proc

invoke PsGetCurrentProcess mov ebx, eax

add ebx, nameOffset

invoke DbgPrint, $CTA0(\ push ebx

invoke DbgPrint, ebx pop ebx

invoke strncmp, $CTA0(\ push eax

invoke DbgPrint, $CTA0(\ pop eax ret

GetProcessName endp

HookCode proc

;执行被覆盖的代码

push dword ptr [ebp-38h] push dword ptr [ebp-24h] ;判断是否dnf的进程 invoke GetProcessName

.if !eax ;如果是DNF自己的进程,那么跳转回去执行它的Hook代码 pushad

invoke DbgPrint, $CTA0(\ popad

mov eax, NtOpenProcessNoChange;805c13e6h jmp eax

.else ;如果不是DNF自己的进程,那么直接调用ObOpenObjectByPointer,再返回到后面

pushad

invoke DbgPrint, $CTA0(\ popad

mov eax, ObOpenObjectByPointerAddr;805b13f0h call eax

mov ebx, NtOpenProcessRetAddr;805c13ebh

jmp ebx .endif

HookCode endp

;获取系统名称偏移 GetNameOffset proc epe local tmpOffset pushad

mov ebx, epe

invoke strlen, $CTA0(\ xor ecx, ecx @@:

push eax push ecx

invoke strncmp, $CTA0(\ pop ecx .if !eax pop eax

mov tmpOffset, ecx popad

mov eax, tmpOffset ret .elseif

pop eax inc ebx inc ecx

cmp ecx, 4096 je @F jmp @B .endif @@: popad

mov eax, -1 ret

GetNameOffset endp

Hook proc pushad

;头5字节跳转

mov eax, offset HookCode

sub eax, NtOpenProcessHookAddr;805c13e0h;805c13edh sub eax, 5

mov ebx, NtOpenProcessHookAddr;805c13e0h;805c13edh mov cl, 0E9h

mov BYTE PTR [ebx], cl

mov DWORD PTR [ebx + 1], eax popad ret

Hook endp

HookThreadCode proc ;执行被覆盖的代码

push dword ptr [ebp-34h] push dword ptr [ebp-20h] ;判断是否dnf的进程 invoke GetProcessName

.if !eax ;如果是DNF自己的进程,那么跳转回去执行它的Hook代码 pushad

invoke DbgPrint, $CTA0(\ popad

mov eax, NtOpenThreadNoChange;805c13e6h jmp eax

.else ;如果不是DNF自己的进程,那么直接调用ObOpenObjectByPointer,再返回到后面

pushad

invoke DbgPrint, $CTA0(\ popad

mov eax, ObOpenObjectByPointerAddr;805b13f0h call eax

mov ebx, NtOpenThreadRetAddr;805c13ebh jmp ebx .endif

HookThreadCode endp

HookThread proc pushad

;头5字节跳转

mov eax, offset HookThreadCode

sub eax, NtOpenThreadHookAddr;805c13e0h;805c13edh sub eax, 5

mov ebx, NtOpenThreadHookAddr;805c13e0h;805c13edh mov cl, 0E9h

mov BYTE PTR [ebx], cl

mov DWORD PTR [ebx + 1], eax popad ret

HookThread endp

HookDbg proc mov edi, edi push ebp mov ebp, esp push ebx push esi

mov esi, KiAttachProcessRetAddr jmp esi HookDbg endp

Dbg proc pushad

;头5字节跳转

mov eax, offset HookDbg

sub eax, KiAttachProcessAddr;805c13e0h;805c13edh sub eax, 5

mov ebx, KiAttachProcessAddr;805c13e0h;805c13edh mov cl, 0E9h

mov BYTE PTR [ebx], cl

mov DWORD PTR [ebx + 1], eax popad ret Dbg endp

;还原自己的Hook

DriverUnload proc pDriverObject:PDRIVER_OBJECT cli

mov eax, cr0

and eax, not 10000h mov cr0, eax

;还原进程处理

mov eax, 0ffc875ffh mov ebx, 805cc656h

mov DWORD ptr [ebx], eax mov eax, 43e8dc75h

mov DWORD ptr [ebx + 4], eax ;还原线程处理

mov eax, 0ffcc75ffh mov ebx, 805cc8d8h

mov DWORD ptr [ebx], eax mov eax, 0c1e8e075h

mov DWORD ptr [ebx + 4], eax

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库dnf辅助外挂C++源代码(仅供学习参考)(2)在线全文阅读。

dnf辅助外挂C++源代码(仅供学习参考)(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/612914.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: