|
inline hook的几个问题,求大神
这个意思是说他是想检测一下前面是不是jmp?如果不是就不写了么? *(PULONG)((ULONG)FuncPtr + Offset + 1) -= Reloc; 我看这个赋值像是 如果检测到第一个是E8或者E9的话,就直接往他后面写一个地址,但是这个地址这么计算 我实在想不明白呢。。。 这个代码是不是应该判断一下reloc这个函数,如果返回是真的就不再直接把前5个字节写入了呢。。 |
|
inline hook的几个问题,求大神
不是吧 那个writejump函数是这样的 VOID WriteJump(PVOID FuncPtr, PVOID JumpPtr) { KIRQL OldIrql; UCHAR Buffer[5]; Buffer[0] = 0xe9; *(PULONG)&Buffer[1] = (ULONG)JumpPtr - ((ULONG)FuncPtr + 5); OldIrql = KeRaiseIrqlToDpcLevel(); __asm { cli; push eax; mov eax, cr0; and eax, 0FFFEFFFFh; mov cr0, eax; pop eax; } // *(PUSHORT)FuncPtr = 0xfeeb; // RtlMoveMemory((PUCHAR)FuncPtr + 2, (PUCHAR)Buffer + 2, 3); // *(PUSHORT)FuncPtr = *(PUSHORT)Buffer; RtlMoveMemory((PUCHAR)FuncPtr, (PUCHAR)Buffer, 5);//我修改了一下 __asm { push eax; mov eax, cr0; or eax, 10000h; mov cr0, eax; pop eax; sti; } KeLowerIrql(OldIrql); } 我怎么看这个才是计算跳转的地址啊。。。 |
|
一个简单问题,赋值为啥不对,ULONG test = *(PULONG)KeAddSystemServiceTable;
晕 结贴啦,声明导出函数的时候没有加dllimport,然后发现他好像赋值的不是nt!KeAddSystemServiceTable,而是我自己程序的yyy!KeAddSystemServiceTable,然后里面好像是个jmp到nt的实现,好+_+。。。不过至少解决鸟~~~遗留问题待解决 |
|
一个简单问题,赋值为啥不对,ULONG test = *(PULONG)KeAddSystemServiceTable;
噢 对 这个对,晕头了。。。 不过第一个问题,*(PULONG)取出来赋值给TEST,这两只为啥不一样呢。。 |
|
一个简单问题,赋值为啥不对,ULONG test = *(PULONG)KeAddSystemServiceTable;
KeAddSystemServiceTable=b1f7e606 test=201c25ff 咋是这样了= = |
|
一个简单问题,赋值为啥不对,ULONG test = *(PULONG)KeAddSystemServiceTable;
ULONG test = *(PULONG)KeAddSystemServiceTable; ULONG test1 = (ULONG)KeAddSystemServiceTable; kd> dd KeAddSystemServiceTable 80597784 8b55ff8b 187d83ec 8b607703 e0c11845 80597794 a0b88304 0080553f 888d5175 80553f60 805977a4 75003983 187d8346 08558b01 10758b56 805977b4 147d8b57 4d8b1189 6488890c 8980553f 805977c4 553f68b0 6cb88980 7480553f a0908918 805977d4 8980553f 553fa488 a8b08980 8980553f 805977e4 553facb8 01b05f80 3202eb5e 14c25dc0 805977f4 cccccc00 ff8bcccc 83ec8b55 7703087d kd> dv test test = 0x201825ff kd> dv test1 test1 = 0xb207e570 我真是 有一种要崩溃的感觉。。 |
|
shadow ssdt hook的一段代码,求解释
非常感谢大大的帮助,我再细细研究一下。 |
|
shadow ssdt hook的一段代码,求解释
好像只是为了做参数检查?? |
|
shadow ssdt hook的一段代码,求解释
貌似又看明白了一点,好像他只是把线程的那个servicetable字段拿出来跟那个SSDT的地址比较了一下,不相等的话就当做是shadow ssdt的地址了。 |
|
shadow ssdt hook的一段代码,求解释
1.刚搜了一下有这么个函数PsConvertToGuiThread 貌似可以直接转过去,那就不用遍历找GUI线程了?不过这个函数貌似没导出的 晕。。 2. kthread.win32thread 这个WRK的结构体里面貌似没这个字段啊? 3.mov edx, MmSystemRangeStart ;这三行,得到的数是80000000,特殊的可能是c0000000h. mov edx, [edx] mov edx, [edx] 这几个是想干啥呀? 4.那个还有比较通用的办法么? |
|
[分享]不敢说网上最全的视频及书籍网盘,但内容多的是你没法想象的!
真是能换个盘么。。 |
|
熊猫正正PE文章的一个问题,求助
[QUOTE=小小的心;1108059]这段话应该是正正摘录时加密解密上的,她最近忙着结婚,我来帮你解释一下 一般的call call 00401000,是直接call的地址,前提是确定了函数地址,才去call call [xxxxxxxx],这个形式,是因为在为链接之前,导入表的实际地址是没有被填充的,但是又不能不去调...[/QUOTE] 先谢谢大神,我今天又好好琢磨了一下,我觉得是不是说这么做导入表填充的时候就比较简单了?只要把IAT那部分集中替换掉就可以了》 也不需要说再去修改代码段里面的数据?? |
|
开了内核调试跟不开在哪里有区别,某驱动会检测?
我自己顶一下? |
|
virtualkd安装完成之后为啥启动调试器那几个选项都是灰色的
好吧,我自己结贴了,这要安装版的windbg才能添加那个path,绿色版的添加了没反应 我晕 |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值