过TP DebugPort清0的方法(最新TP有三处清0)
标 题: 【分享】如何过TP清0的方法(最新TP有三处清0)作 者: wangweilll
时 间: 2012-02-01,17:58:04
链 接: http://bbs.pediy.com/showthread.php?t=145968
由于某人说的兄弟一气之下删除了贴子
现在想来也是像其网友说可能触犯某些的饭碗~~~~~~~~~~~~~~
现在恢复也增加了一些东西
希望朋友多给些意见
这段时间一直在研究tp驱动
我觉得TP清0相对难一点其他都比较间单~~~
在这要感谢这篇文章的兄弟
http://bbs.pediy.com/showthread.php?t=126802&highlight=tp
虽然用他给出的代码没有过掉TP但是用他给出的思路
分析总结了crazyearl一下:
1.定位TP驱动模块的首地址.
2.如何定位特征大家可以参考
http://bbs.pediy.com/showthread. ... highlight=DebugPort
这篇文章我通过IDAXT找到的特征码
3.再找岀一处监控.二处清0代码的首址!!!!!!!!!!!
这重点呢
3.找到这三处的首地址后注意了先要干掉监控在干掉清0
NTSTATUS My_Recovery_Debugport()
{
NTSTATUS stats;
KIRQLIrql;
BYTEC390 = {0xc3,0x90};
//首先干掉监视函数
WPOFF();//清除CR0
//提升IRQL中断级
Irql=KeRaiseIrqlToDpcLevel();
//写入
RtlCopyMemory(ps2,C390,2);
//恢复Irql
KeLowerIrql(Irql);
WPON(); //恢复CR0
returnSTATUS_SUCCESS;
}
//干掉2个SD
NTSTATUS My_Recovery_Debugport1()
{
NTSTATUS stats;
KIRQLIrql;
BYTEC390 = {0xc3,0x90};
WPOFF();//清除CR0
//提升IRQL中断级
Irql=KeRaiseIrqlToDpcLevel();
//写入
RtlCopyMemory(ps,C390,2);
//恢复Irql
KeLowerIrql(Irql);
WPON(); //恢复CR0
returnSTATUS_SUCCESS;
}
NTSTATUS My_Recovery_Debugport2()
{
NTSTATUS stats;
KIRQLIrql;
BYTEC390 = {0xc3,0x90};
WPOFF();//清除CR0
//提升IRQL中断级
Irql=KeRaiseIrqlToDpcLevel();
//写入
RtlCopyMemory(ps1,C390,2);
//恢复Irql
KeLowerIrql(Irql);
WPON(); //恢复CR0
returnSTATUS_SUCCESS;
}
这是修改crazyearl的代码我没有用他找特征码的代码自己写了一段汇编代码找到了首地址
哈如何查找特征码的代码我就不发了
因为现在许多都靠过TP驱动吃饭>>
我想说crazyearl的方法是有效地
清0如何查找及定位我的工具是Syser 进行本地调试.
由于对于此调试器也不太会用定位 EPROCESS+BC 地址只好用windbg.exe在本地内核调试命今窗口
就可找到你所进程的信息
2.打开Syser Loader 按Ctrl+F12并在命今行下
bpm EPROCESS+BCw
bpm是下断指今
EPROCESS+BC 就用我说吧不知就
w 写访问
下好断点就F5一下就会断下来记录下清0地址(EBXXXXXX)
呵呵好像最新TP有三个清0就F5在两次并记录下清0地址.(要注意提取出特征握)
3.现在就找监控.我记录的清0地址就要用上了在命今行下
bc XXXXXXXX 清除断点
bpm EBXXXXXX rw
F5一下就可断在监控代码段 .(要注意提取出特征握)
不多说了~~~~~~~~~~~~
最新TP要处理三处请0一处监控~~~~~~~~曰第三处有点变态呵呵调试兄弟
花差不多两天时间最后给我呵呵废话不多说了
页:
[1]