codez
驱动牛犊
驱动牛犊
  • 注册日期2005-06-20
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望73点
  • 贡献值0点
  • 好评度49点
  • 原创分0分
  • 专家分0分
40楼#
发布于:2008-04-04 17:58
好久没来了,刚来就发现这么好玩的东西哈。

我的想法:

1. 直接摘链,这个我就不说了,体力活而已; 或者 hook 那个KeDelayExecutionThread ;
2. 由于驱动设计的缺陷,因此我们可以以很容易的杀死目标进程(注意:偷懒方法,针对此程序设计而已,无任何技术,只是思路而已,呵呵)。

说说方法2:

1. 加载 ppxx.sys
2. 运行 ppxx.exe 另他处于被保护状态;
3. 运行我提供的 updatexxpp 程序,然后使用任意程序结束目标或者直接关闭 ppxx.exe 即可 :)
不过,这些方法有违规的嫌疑,和要求有些擦边了 :(
但是,话说话来了,本来方法就不多,如果都不让用了...

updatexxpp 的源代码如下:

===========================
// created by codez @2008

#include <stdio.h>
#include <stdarg.h>
#include <windows.h>

#define CODE    0x222000
#define DEVICE_NAME    "\\\\.\\xxpp"

void fatal (char * fmt, ...)
{
    va_list args;
    
    va_start(args, fmt);
    vfprintf(stderr, fmt, args);
    va_end(args);
}

int main(int argc, char * argv[])
{
    HANDLE hDevice = CreateFile(DEVICE_NAME, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    DWORD dwPid, dw;
    if (hDevice == INVALID_HANDLE_VALUE) {
        fatal ("No device found! Good luck!\n");
        return -1;
    }
    
    dwPid = 0;
    if (DeviceIoControl(hDevice, CODE, &dwPid, sizeof(dwPid), NULL, 0, &dw, NULL)) {
        printf ("OK! You could use taskmgr program to kill the target file now!\n");
    } else {
        fatal ("Failed to set process id!!! Error=0x%lX\n", GetLastError());
    }
    
    CloseHandle(hDevice);
    return 0;
}
// end
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
41楼#
发布于:2008-04-04 08:26
谁有兴趣就干下这个重体力活吧,哈哈.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
42楼#
发布于:2008-04-04 00:08
啥呢,楼上也没搞清楚。。。
建议还是仔细IDA F5后再发言~
驱动开发者 呵呵
linkin__park
驱动牛犊
驱动牛犊
  • 注册日期2006-03-12
  • 最后登录2009-09-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
43楼#
发布于:2008-04-04 00:01
安全结束进程需要在进程内线程执行代码,LZ又不让进程存在活动线程,2个条件完全冲突,也就是找出外部结束进程的办法...
rhettxie
驱动牛犊
驱动牛犊
  • 注册日期2004-10-27
  • 最后登录2010-02-04
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望65点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
44楼#
发布于:2008-04-03 22:40
.text:000106DC                call    PsSetCreateProcessNotifyRoutine
.text:000106E1                push    offset sub_10560 ; NotifyRoutine
.text:000106E6                call    PsSetCreateThreadNotifyRoutine

建立这样连个回调,然后在回调里判断是否自己的进程,是的话就无限期
KeDelayExecutionThread

不好意思,我说反了
静水流深
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
45楼#
发布于:2008-04-03 22:29
老大,IDA也要给点专业精神啊,你反的不正确,这样会误导后来的同志们的
驱动开发者 呵呵
rhettxie
驱动牛犊
驱动牛犊
  • 注册日期2004-10-27
  • 最后登录2010-02-04
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望65点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
46楼#
发布于:2008-04-03 22:27
.text:000106DC                 call    PsSetCreateProcessNotifyRoutine
.text:000106E1                 push    offset sub_10560 ; NotifyRoutine
.text:000106E6                 call    PsSetCreateThreadNotifyRoutine

建立这样连个回调,然后在回调里判断是否自己的进程,不是的话就无限期
KeDelayExecutionThread

同志们不用反了,直接想办法吧
静水流深
上一页 下一页
游客

返回顶部