过滤劫持和函数回调(2)

body
{
font-family: 微软雅黑,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif;
font-size: 10.5pt;
line-height: 1.5;
}
html, body
{

}
h1 {
font-size:1.5em;
font-weight:bold;
}
h2 {
font-size:1.4em;
font-weight:bold;
}
h3 {
font-size:1.3em;
font-weight:bold;
}
h4 {
font-size:1.2em;
font-weight:bold;
}
h5 {
font-size:1.1em;
font-weight:bold;
}
h6 {
font-size:1.0em;
font-weight:bold;
}
img {
border:0;
max-width: 100%;
height: auto !important;
}
blockquote {
margin-top:0px;
margin-bottom:0px;
}
table {
border-collapse:collapse;
border:1px solid #bbbbbb;
}
td {
border-collapse:collapse;
border:1px solid #bbbbbb;
}

注意release模式:




这里实现对tasklist指令的劫持,其它不劫持:

#include<stdio.h>

#include<windows.h>

#include<string.h>

#include"detours.h"

#pragma comment (lib ,"detours.lib" )

static int (*oldsystem)(const char * _Command) = system;

//全部劫持

int  newsystemA(const char * _Command ){

//puts(_Command);

return 0;

}

//劫持过滤

int  newsystem(const char * _Command ){

char*p = strstr( _Command, "mspaint");

if(!p){

oldsystem( _Command);          //函数回调

return 1;

}

printf( "%s 劫持成功\n" , _Command );

return 0;

}

//开始拦截

void Hook()

{

DetourRestoreAfterWith(); //恢复原来状态,

DetourTransactionBegin(); //拦截开始

DetourUpdateThread(GetCurrentThread()); //刷新当前线程

//这里可以连续多次调用DetourAttach,表明HOOK多个函数

//printf("%p %p\n", &oldsystem, &newsystem);

DetourAttach(( void **)&oldsystem, newsystem); //实现函数拦截

//printf("%p %p\n", &oldsystem, &newsystem);

//

DetourTransactionCommit(); //拦截生效

}

//取消拦截

void UnHook()

{

DetourTransactionBegin(); //拦截开始

DetourUpdateThread(GetCurrentThread()); //刷新当前线程

//这里可以连续多次调用DetourDetach,表明撤销多个函数HOOK

DetourDetach(( void **)&oldsystem, newsystem); //撤销拦截函数

DetourTransactionCommit(); //拦截生效

}

int main(){

Hook();

getchar();

system( "calc");

getchar();

system( "notepad");

getchar();

system( "mspaint");

getchar();

return 0;

}

来自为知笔记(Wiz)

时间: 2024-12-27 17:41:49

过滤劫持和函数回调(2)的相关文章

php 自带过滤和转义函数

转:php 自带过滤和转义函数 函数名 释义 介绍 htmlspecialchars 将与.单双引号.大于和小于号化成HTML格式 &转成&"转成"' 转成'<转成<>转成> htmlentities() 所有字符都转成HTML格式 除上面htmlspecialchars字符外,还包括双字节字符显示成编码等. addslashes 单双引号.反斜线及NULL加上反斜线转义 被改的字符包括单引号 (').双引号(").反斜线 backsl

递归、函数回调、字符的思考

1.函数指针类型做什么工作呢(起什么作用) 1)它规定了函数的"返回值和参数."只要是这种它所对应的返回值和参数类型的函数,它都可以调用起来. 2)回调函数是通过函数指针做函数参数实现的,"它的本质是:提前对函数的返回值和参数做了一个约定" 2.数组类型和数组指针指针类型 1)数组类型 int arr[10]; arr代表数组首元素地址: &arr代表整个数组首地址.虽然 arr 和 &arr 的值相同,但是他们的步长不同 2)数组类型 typede

再议指针---------函数回调(qsort函数原理)

我们能否写一个这样的函数: 可以对任何类型数据排序 任何人在使用该函数不需要修改该函数代码(即:用户可以不必看到函数源 码,只会调用就行) 思考: 用户需要排序的数据的类型千变万化,可能是int型,也有可能是自定义的结构体类型,各种类型的大小比较规则是不一样的,这样看来实现一个这样全能的排序函数似乎不可能. 但具体需要排序的类型应按照什么规则确定大小只有使用该函数的用户最清楚,那我们可不可以把实现比较大小的功能交给用户来完成了,到时候用户只需告诉该函数比较规则(函数)在什么位置,这样排序函数不就

在父页面和其iframe之间函数回调 父页面回调iframe里写的函数

// @shaoyang  父页面 window['mengBanLogin']={ mengBanArr : new Array(), mengBanLoginSuccess : function(){ console.log('mengbanzhixing'); if(mengBanLogin.mengBanArr.length > 0){ for(var i = mengBanLogin.mengBanArr.length-1; i >= 0; i--){ mengBanLogin.me

速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数

[源码下载] 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函数返回值 可变函数 匿名函数 闭包函数 回调函数 示例1.函数的相关知识点 1(基础)function/function1.php <?php /** * 函数的相关知识点 1(基础) */ // 可以在相关的 function 声明语句之前调用该函数 f1(); function f1() { echo "f1"; echo "<br />"; } // 这里调用

委托&amp;指针函数&amp;回调函数

委托 委托是一种数据类型,像类一样(可以声明委托类型变量)方法参数可以是int string 类类型. //1 //委托小结 //1 定义一个委托需要delegate关键字 //public delegate void WriteTimeToAny(); //2 委托用来存储的方法要与定义的委托类型相一致 //3 委托是一个数据类型,用时需要传递一个变量,可以使用关键字new也可以不使用 //使用委托的意义 //主要是注入代码,写入一个委托类型方法方便以后使用时可以用实现相应的功能 //2 //

函数回调以及函数指针

code 其实只是行为的一种描述,code可以编码成为data,将data解释运行的时候,也会变成code.code和data可以不用区分,统一称为信息. ##统一code.data的共性(数据和代码的统一) 有些语言不单可以传递函数,函数里面又用到一些外部信息(包括code, data).那些语言可以将函数跟函数所用到的信息一起传递存储. 这种将函数和它所用的信息作为一个整体,就为闭包. ### 闭包在swift语言中经常会用到. ### 将代码和数据打通,统一起来,是一个槛.比如一些修改自身

JavaScript 函数回调

我们经常会用到客户端与Web项目结合开发的需求,那么这样就会涉及到在客户端执行前台动态脚本函数,也就是函数回调,本文举例来说明回调函数的过程. 首先创建了一个Web项目,很简单的一个页面,只有一个button与textbox,代码与效果如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebTest.De

15 函数回调 模块

函数回调 提前写出函数的调用,再去考虑函数体的实现 怎么样提前写出函数的调用:在另一个函数中写出函数的调用 再去考虑函数体的实现:根据实际的需求 def my_sleep(sec): import time current_time = time.time() while time.time() - current_time < sec: pass def download(fn=None): print('开始下载') my_sleep(1) data = '下载得到的信息' print('下