自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

liujiayu2的专栏

玩点技术

  • 博客(1572)
  • 资源 (33)
  • 收藏
  • 关注

原创 linux下给CPU增加指定百分比的压力

一台计算机会因为当前CPU的占率不同情况表现出不同的稳定性和实时性以及其他性能情况。需要编写一个程序将一个CPU或者多个CPU占用到指定值的占用率,比如50%。很多工具都是直接一颗CPU占满,意义不大。故此特地写一个代码。

2023-01-27 15:09:12 55

原创 apollo源码解读:信号槽机制

大家都知道Qt的信号槽机制给编程带来了极大的便利,阿波罗通讯主要通过同一channel的读写,简而言之就是发布订阅模型,这个时候信号槽的机制就显得极为实用,阿波罗在cyber基础类库里面用C++模板类自己写了一套信号槽机制,值的学习。1.和qt的信号槽差不多,不处理返回值,即发送信号函数没有返回值,槽函数执行不处理返回值2.信号、槽、连接都封装成了类3.推荐信号和槽参数一致4.主要用到地方:底层通信机制来看看怎么使用...

2022-07-08 16:32:09 280

原创 apollo源码解读:无锁队列BoundedQueue

在此贴出来apollo源代码,本篇只是源码解读,想要看此文件依赖的相关文件可访问:https://github.com/ApolloAuto/apollo/tree/master/cyber/base1.整个类是个数组,指定大小的数组,意味着数据是连续存储的。2.Init的时候会申请好相关的内存,大小为(N+2)*单个大小,为什么是n+2?想不通3.数据的存储如下图所示 队列大小是固定的,超过指定数量再进行加入会失败。数据是循环往复利用的,感觉上就是环形内存池4.之所以是无锁队列是因为底层有原子操作5

2022-07-07 13:53:06 281

原创 apollo源码解读:/cyber/sysmo 模块

SysMo是一个用DECLARE_SINGLETON宏实现的单例类,在公开函数cyber::Init里面执行了SysMo::Instance进行实例化,SysMo构造函数执行了自己的Start函数,检测环境变量sysmo_start的值是否为1,若为1则开启一个线程不停的调用scheduler::Instance()->CheckSchedStatus,调用间隔为100毫秒,上述CheckSchedStatus函数执行逻辑是遍历所有执行器的快照状态,是否为空闲,若在干活则输出干了多长时间了以及协程的名字,线

2022-07-01 13:05:15 139

原创 apollo源码解读:/cyber/scheduler 模块

cyber提供的三大功能:调度功能、通讯功能、组件。其中调度功能最核心的逻辑在/cyber/scheduler下面,本篇文章主要自己对该模块的研读和理解,可能会有错误,看到的朋友帮忙点播一下。首先看下牵涉到协程的一些基本概念图谱,对协程有些基本的概念和了解 再次看下阿波罗设计的协程-调度系统类关系图谱,这个理解这个图谱会对阅读源代码有所帮助,推荐边看源代码边看图谱 里面有两大调度方案:classic(经典)和choreography(编排),图谱如下 进入正文cyber主要提供了两种协程的调度方案class

2022-06-24 16:11:28 909

原创 apollo源码解读:/cyber/croutine 模块

本篇解读一下/cyber/croutine模块,该模块文件比较少,detail文件夹,CRoutine类,RoutineFactory模板类1.detail文件夹主要实现类似linux下的ucontext_t结构和其四个关联函数getcontext、setcontext、makecontext、swapcontext.实现堆栈的创建保存和切换,为什么不使用linux自带api而是要自己用汇编实现呢?有博主文章说linux那一套api最终要牵扯到系统内核里面,cyber自己实现这一套完全是应用层的,可以进一

2022-06-17 16:45:57 354 2

原创 apollo源码解读:cyber的Service踩坑笔记

1.坑描述:不用临时变量接收函数node->CreateService返回值导致服务创建失败2.前戏:cyber作为ROS的替代品提供了主要两大功能:调度功能和通讯功能.通讯功能包括订阅发布模式和一问一答的Service模式.本篇主要讲的是Service模式下的一个坑.Service的主要实现代码在/cyber/service下面,仅4个文件(两个头文件两个实现文件).可谓相当的精巧.怎么使用呢?源代码里面/cyber/examples/service.cc.50多行代码展示了如何使用他的Service功能

2022-06-08 16:15:26 268 2

原创 apollo源码解读:/cyber/task 模块

在这里就不贴源代码,太占空间了,源码连接:https://github.com/ApolloAuto/apollo/tree/master/cyber/taskcyber下面的task包是使用cyber协程的入口包,共有5个文件如下:BUILD文件:构建文件task_manager.h文件:任务管理头文件task_manager.cc文件:任务管理主文件task_test.cc文件:任务管理测试文件task.h文件对task_manager封装使用的文件构建文件和测试文件不再赘述,和其他包类似,比

2022-06-01 13:43:58 388

原创 apollo源码解读:进程或线程设置调度策略、优先级

1.利用setpriority调整“进程”优先级,测试优先级对进程的影响(注:是进程而不是线程)定义函数 int setpriority(int which,int who, int prio);参数1 : PRIO_PROCESS who为进程识别码 PRIO_PGRP who 为进程的组识别码 PRIO_USER who为用户识别码参数2 :参数3 :prio介于-20至20之间。代表进程执行优先权,数值越低代表有较高的优先次序,执行会较频繁。此优先权默认是0,而只有超级用户(root)

2022-05-27 14:22:21 597

原创 apollo源码解读:进程或线程绑定指定CPU

1.简介CPU绑定指的是在多CPU的系统中将进程或线程绑定到指定的CPU核上去执行。在Linux中,我们可以利用CPU affinity属性把进程绑定到一个或多个CPU核上。CPU Affinity是进程的一个属性,这个属性指明了进程调度器能够把这个进程调度到哪些CPU上。 该属性要求进程在某个指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器。CPU Affinity分为2种:soft affinity和hard affinity。soft affinity只是一个建议,如果不可避免,调

2022-05-20 17:26:59 310

原创 apollo源码解读:std::atomic实现读写锁

直接上源代码吧,代码是阿波罗团队写的源代码,我这边给加了注释/*1.有一说一这个读写锁的设计还是很牛逼的,以我自己感觉atomic和读写完全不相干的东西竟然可以用前者实现后者2.这个设计理念是不是百度阿波罗团队自创的呢?好像不是,这有个连接,设计理念很相似,15年的博客: https://blog.csdn.net/10km/article/details/49641691*/#ifndef CYBER_BASE_ATOMIC_RW_LOCK_H_#define CYBER_BASE_

2022-05-12 15:39:27 673

原创 38.借用与引用

/*1.rust中借用和引用的附带功效都一样,就是都有生命周期。借用使用&关键字,引用使用ref关键字。借用的对象是必须存在的,引用的对象可以虚拟的,后期附上对象。2.match的模式匹配上只能使用 ref,在函数声明上只能使用&来表示引用类型3.非要给区分ref和&到底哪个是引用,哪个是借用。我们可以先从词性划分,引用我归类为名词,而借用归类为动词。&A在表达式上 表示借用A,这是一个动作,那结果就是产出一个引用类型。所以let ref B表示声明了一个引用类型,它.

2021-03-12 11:05:42 812

原创 37.rust属性.txt

=====================================================================================================================================元素 在Rust中,Item是Crate(库)的一个组成部分。它包括 extern crate声明 use声明 模块(模块是一个Item的容器) 函数 type定义 结构体定义 枚举类型定义 常量定义 静.

2021-03-09 12:53:36 255

原创 36.rustc编译参数.txt

/* --cfg SPEC - 传入自定义的条件编译参数,使用方法如:rustc --cfg hello main.rs--crate-type - 指定编译输出类型,它的参数包括 rustc --crate-type staticlib myhello.rs 链接库生成.a的链接库 bin - 二进行可执行文件 -> bin或者lib二选一 lib - 编译为库 -> rlib - Rust库 .

2021-03-09 12:53:02 547

原创 35.cargo配置参数.txt

######################################################################## 详细教程地址:https://learnku.com/docs/cargo-book/2018/# https://www.jianshu.com/p/22a467204def?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_so.

2021-03-09 12:52:05 793

原创 34.rust宏.txt

/*更多请看:http://blog.hubwiz.com/2020/01/30/rust-macro/https://github.com/rooat/RustLearn/blob/master/src/appendix-04-macros.mdhttps://rustcc.gitbooks.io/rustprimer/content/macro/macro.htmlhttps://rust-by-example.budshome.com/macros.html定义:Rust宏让你可以发.

2021-03-09 12:51:34 215

原创 33.文件与 IO.rs

use std::fs;use std::fs::File;use std::fs::OpenOptions;use std::io::prelude::*;use std::io::stdin;fn main() { //Rust 中主函数是个无参函数,环境参数需要开发者通过 std::env 模块取出 let args = std::env::args(); println!("{:?}", args); for arg in args { .

2021-03-09 12:50:40 157

原创 32.生命周期注释.rs

/*更多文章参考:https://github.com/rooat/RustLearn/blob/master/src/ch10-03-lifetime-syntax.mdhttps://github.com/rooat/RustLearn/blob/master/src/ch19-02-advanced-lifetimes.md*///返回的是新生成的String,有自己的生命周期,如果使用&str的话生命周期跟随他人fn longer1(s1: String, s2: String.

2021-03-09 12:49:55 504

原创 31.错误处理.rs

/*程序中一般会出现两种错误:可恢复错误和不可恢复错误可恢复错误:可恢复错误的典型案例是文件访问错误,如果访问一个文件失败,有可能是因为它正在被占用,是正常的,我们可以通过等待来解决不可恢复错误:由编程中无法解决的逻辑错误导致的,例如访问数组末尾以外的位置对于可恢复错误用 Result<T, E> 类来处理,对于不可恢复错误使用 panic! 宏来处理。enum Result<T, E> { Ok(T), Err(E),}在 Rust 标准库中可能产生.

2021-03-09 12:48:57 156

原创 30.并发.rs

/*安全高效的处理并发是 Rust 诞生的目的之一,主要解决的是服务器高负载承受能力。并发(concurrent)的概念是只程序不同的部分独立执行,这与并行(parallel)的概念容易混淆,并行强调的是"同时执行"。Rust 中通过 std::thread::spawn 函数创建新线程.*/use std::sync::mpsc;use std::thread;use std::time::Duration;fn spawn_function() { for i in 0..

2021-03-09 12:48:19 96

原创 29.rust类型转换.rs

/*1.基本类型可以通过显示类型转换机制(as)来实现相互之间的转换。2.Rust通过使用trait来处理定制类型(enum、struct)之间的类型转换。3.通用的类型转换一般使用的trait为From和To。Rust孤儿原则:在声明trait和impl trait的时候,Rust规定了一个Orphan Rule(孤儿规则):impl块要么与trait的声明在同一个的crate中,要么与类型的声明在同一个crate中。也就是说,不能在一个crate中,针对一个外部的类型,实现一个外部的tr.

2021-03-09 12:47:16 763

原创 28.特性trait.rs

/*特性(trait)概念接近于 Java 中的接口(Interface),但两者不完全相同。特性与接口相同的地方在于它们都是一种行为规范,可以用于标识哪些类有哪些方法trait Descriptive { fn describe(&self) -> String;}Descriptive 规定了实现者必须有是 describe(&self) -> String 方法。(必须实现所有方法)几个非常有用的标准库特性: Drop提供了当一个值退出作用域后执行代.

2021-03-08 12:43:54 132

原创 27.泛型generics.rs

/*fn max(array: &[i32]) -> i32 { let mut max_index = 0; let mut i = 1; while i < array.len() { if array[i] > array[max_index] { max_index = i; } i += 1; } array[max_index].

2021-03-08 12:43:19 76 1

原创 26.PhantomData幽灵数据.rs

/*它在标准库中的定义如下:#[lang = "phantom_data"]#[stable(feature = "rust1", since = "1.0.0")]pub struct PhantomData<T: ?Sized>;可以到它只是一个不占用任何空间的单元结构体,#[lang = "phantom_data"], 也表明了它是一个语言项,供 Rust 编译器本身使用。https://blog.csdn.net/wowotuo/article/details/931.

2021-03-08 12:42:42 425

原创 25.智能指针.rs

/*参考文章:https://zhuanlan.zhihu.com/p/112307245https://rustcc.cn/article?id=76e5f3fb-20b9-48c9-8fc6-a0aad40ced8chttps://www.codercto.com/a/27950.htmlhttps://www.twle.cn/c/yufei/rust/rust-basic-smart-pointers.htmlhttps://www.cnblogs.com/dream397/p/1418.

2021-03-08 12:42:05 84

原创 24.内存操作Copy-Move-Clone.rs

/*详细请看:https://zhuanlan.zhihu.com/p/21730929https://zhuanlan.zhihu.com/p/184907190Clone VS Copy VS Move首先看一下这个两个trait的关系:pub trait Sized { // Empty.}pub trait Clone: Sized { fn clone(&self) -> Self; fn clone_from(&mut self,.

2021-03-08 12:41:28 234

原创 23.所有权.rs

/* 所有权1.Rust 中的每个值都有一个变量,称为其所有者。2.一次只能有一个所有者。3.当所有者不在程序运行范围时,该值将被删除。变量与数据交互方式主要有移动(Move)和克隆(Clone)两种。可以引用租借*/fn main() { { // 在声明以前,变量 s 无效 let _s = "runoob"; // 这里是变量 s 的可用范围 } // 变量范围已经结束,变量 s 无效 test1.

2021-03-08 12:40:49 95

原创 22.循环控制.rs

fn main() { //while 循环 let mut number = 1; while number != 4 { println!("{}", number); number += 1; } //Rust 语言到此教程编撰之日还没有 do-while 的用法,但是 do 被规定为保留字,也许以后的版本中会用到。 // Rust 中没有for循环使用三元语句控制循环,需要用 while 循环来代替 /.

2021-03-08 12:40:18 77

原创 21.println输出打印.rs

fn main() { let a = 12; println!("a is {0}, a again is {0}", a); println!("{{}}"); }

2021-03-08 12:39:44 123

原创 20.if条件语句.rs

fn main() { // if else let number = 7; if number < 5 { println!("值小于5"); } else if number >5 { println!("值大于5"); } else { println!("值为5"); } //Rust 中的条件表达式必须是 bool 类型,例如下面的程序是错误的 /...

2021-03-08 12:38:50 158

原创 19.函数的使用.rs

fn main() { another_function(5, 6); println!("{}",test_return()); println!("{}",test_return2());}// Rust不在乎您在何处定义函数,只需在某个地方定义它们即可。// Rust 中定义函数如果需要具备参数必须声明参数名称和类型:fn another_function(x: i32, y: i32) { println!("x 的值为 : {}", x); ...

2021-03-08 12:38:16 143

原创 18.self关键字.rs

#[derive(Debug)]struct MyType { name: String}impl MyType { fn do_something(self, age: u32) { //等价于 fn do_something(self: Self, age: u32) { //等价于 fn do_something(self: MyType, age: u32) { println!("name = {}", self.name); .

2021-03-05 11:31:19 78

原创 17.默认值Default.rs

fn test_1() { //没有初始化会编译报错.use of possibly-uninitialized `i` let i: i8 = Default::default(); let (x, y): (Option<String>, f64) = Default::default(); let (a, b, (c, d)): (i32, u32, (bool, bool)) = Default::default(); println!("{}.

2021-03-05 11:30:05 242

原创 16.枚举中的option和result.rs

fn test_option() { //Option 是 Rust 标准库中的枚举类,这个类用于填补 Rust 不支持 null 引用的空白 /* enum Option<T> { Some(T), None, } */ let opt = Option::Some("Option_Some_str"); match opt { Option::Some(s.

2021-03-05 11:28:21 210 1

原创 15.枚举enum.rs

//枚举类在 Rust 中并不像其他编程语言中的概念那样简单,但依然可以十分简单的使用#[derive(Debug)]enum Book { Papery, Electronic,}//如果你现在正在开发一个图书管理系统,你需要描述两种书的不同属性(纸质书有索书号,电子书只有 URL),你可以为枚举类成员添加元组属性描述enum Book2 { Papery(u32), Electronic(String),}//如果你想为属性命名,可以用结构体语法e.

2021-03-05 11:27:36 71

原创 14.结构体struct.rs

//Rust 里 struct 语句仅用来定义,不能声明实例,结尾不需要 ; 符号,而且每个字段定义之后用 , 分隔#[derive(Debug)]struct Site { domain: String, name: String, nation: String, found: u32}fn main() { let runoob = Site { domain: String::from("www.runoob.com"), .

2021-03-05 11:24:57 133

原创 13.迭代器.rs

/*在Rust中,迭代器共分为三个部分:迭代器、适配器、消费者。_迭代器_给你一个值的序列_适配器_操作迭代器,产生一个不同输出序列的新迭代器_消费者_操作迭代器,产生最终值的集合迭代器本身提供了一个惰性的序列,适配器对这个序列进行诸如筛选、拼接、转换查找等操作,消费者则在前两者的基础上生成最后的数值集合更多请看https://blog.csdn.net/guiqulaxi920/article/details/78823541*/use std::collections::Has.

2021-03-05 11:23:31 68

原创 12.映射表map.rs

/* 映射表*/use std::collections::HashMap;fn test_1() { println!("-------------------------test_1-------------------------"); let mut map = HashMap::new(); //这里没有声明散列表的泛型,是因为 Rust 的自动判断类型机制。 map.insert("color", "red"); map.insert("size",.

2021-03-05 11:20:41 81

原创 11.向量vector.rs

/*向量(Vector)是一个存放多值的单数据结构,该结构将相同类型的值线性的存放在内存中。向量是线性表,在 Rust 中的表示是 Vec<T>。向量的使用方式类似于列表(List),我们可以通过这种方式创建指定类型的向量:*/fn test_1() { let vector: Vec<i32> = Vec::new(); // 创建类型为 i32 的空向量 let vector = vec![1, 2, 4, 8]; // 通过数组创建向量 .

2021-03-05 11:20:09 109

原创 10.切片slice.rs

//切片(Slice)是对数据值的部分引用。//..y 等价于 0..y//x.. 等价于位置 x 到数据结束//.. 等价于位置 0 到结束fn main() { //最简单、最常用的数据切片类型是字符串切片(String Slice)。 let s = String::from("broadcast"); let len = s.len(); let part1 = &s[0..5]; let part2 = &s[5..len];.

2021-03-05 11:19:37 109

python2.7.8 32

python2.7.8 32位安装包及相关模块安装包,还有32位的PyScripter。 资源包含的文件如下: python-2.7.8.msi matplotlib-1.4.0.win32-py2.7.exe MySQL-python-1.2.4b4.win32-py2.7.exe numpy-1.8.1-win32-superpack-python2.7.exe pyparsing-2.0.2.win32-py2.7.exe python-dateutil-2.2.win32-py2.7.exe six-1.7.3.win32-py2.7.exe PyScripter-v2.5.3-Setup.exe

2016-05-25

detours HOOK API

detours HOOK API 官网网速太慢,谁用谁知道

2015-12-23

C++解析JSON

C++解析JSON

2015-12-02

AStar 算法实例

A星算法 对于空地左键单击后会产生障碍,对障碍左键单击会消除障碍,对于起点,两次左键盘单击会消除起点,如果不存在起点,单击右键会产生起点,如果存在起点不存在终点,单击右键会产生终点,如果既存在起点又存在终点,单击右键会消除终点,点击开始寻路回画出路径

2015-07-18

Visual Assist X补丁

码农们,当你使用VAX助手提示更新的时候,当你安装好新版打开VS提示注册的时候,你是否到处在找patch补丁,每次更新你都蛋碎一样到处寻找,这次我们给大家带来超级通用和谐补丁,每次更新VA_X后均可一如既往的正常使用,免去码农到处寻找补丁、反复打补丁、补丁版本不支持现有IDE的痛苦,翠花上菜!

2015-06-18

CrashFinder2.55

CrashFinder,找到崩溃代码行

2015-05-26

appverifier

AppVerifier,专门用来检测那些用普通方法检测不出的意想不到的bug(比如内存溢出、错误句柄使用等)。而且AppVerifier使用非常简单,

2015-05-22

强制复制软件

强制复制软件

2015-04-22

破解存储过程的加密

破解存储过程的加密

2015-04-22

Python平台

Python平台

2015-04-05

VC西红柿插件破解版

VC西红柿插件破解版

2015-04-05

各种各样的按钮(VC源码)

各种各样的按钮(VC源码)

2014-11-17

瞬间找文件

瞬间找文件

2014-09-05

密码查看器.zip

密码查看器.zip

2014-09-05

VC助手破解版

VC助手

2014-09-05

首创第一本单机游戏外挂制作教程

首创第一本单机游戏外挂制作教程

2008-03-08

编码测试工程.rar

编码测试工程

2019-11-20

cmake-3.14.3-win64-x64.zip

cmake-3.14.3 最新安装版 CMake是一个开源的跨平台工具系列,旨在构建,测试和打包软件。CMake用于使用简单的平台和独立于编译器的配置文件来控制软件编译过程,并生成可在您选择的编译器环境中使用的本机makefile和工作空间。

2019-09-05

luac逆向工具

luac编译之后的逆向,亲测可用 详细亲看:https://blog.csdn.net/liujiayu2/article/details/81940701

2018-08-22

ffmpeg推送摄像头rtmp流

详细信息请看: https://blog.csdn.net/liujiayu2/article/details/80880815

2018-07-02

IOCP网络模型

详细信息请看: https://blog.csdn.net/liujiayu2/article/details/80772904

2018-06-28

跨平台高性能TCP服务器框架 &boost;

基于boost的asio封装的高性能TCP服务器。asio已经有很好的事件封装机制,只有底层事件,没有针对TCP建立会话机制;也没有多包进行合包,以包为单位的事件提交机制。由于以上多种原因,决定对boost库进行更高的抽象和封装,对开发者提供一种更为便利的使用接口。

2018-06-25

网狐IOCP压缩版

网狐IOCP压缩版,自己整理了两天,3分不算多吧, 遗留问题: 1.由于不太会使用去掉了网络事件(收发数据、网络接受、网络断开)进队列,发的时候直接发送,接收的时候直接回调。不知道原作者都放进队列里 面有哪些确切的好处。 暂时先这样,后续更新。。。

2018-06-22

用C++实现的壳

基础版壳所实现的功能: 1.在原程序中添加一块区段,将壳部分的代码移植进去。 2.在程序启动前优先获得控制权,执行完自己的代码以后再将控制权交还给原程序。 3.对代码段进行简单的亦或加密。 4.对原程序的导入表(IAT)进行修复。 5.如果原程序开启了随机基址,则对源程序进行重定位修复。

2017-09-14

像加载DLL一样加载EXE

像加载DLL一样加载EXE 介绍 你可能已经被警告过,不要用LoadLibrary()加载可执行文件,你可能尝试这么做过,然后程序就崩溃了,所以你可能会认为这是不可能的。 但实际上这是可行的,本文就将介绍具体的方法。

2017-09-10

protobuf-2.61最新版

protocolbuffer 以下简称PB 是google 的一种数据交换的格式 它独立于语言 独立于平台 google 提供了三种语言的实现:java c++ 和 python 每一种实现都包含了相应语言的编译器以及库文件 由于它是一种二进制的格式 比使用 xml 进行数据交换快许多 可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换 作为一种效率和兼容性都很优秀的二进制数据传输格式 可以用于诸如网络传输 配置文件 数据存储等诸多领域 ">protocolbuffer 以下简称PB 是google 的一种数据交换的格式 它独立于语言 独立于平台 google 提供了三种语言的实现:java c++ 和 python 每一种实现都包含了相应语言的编译器以及库文件 由于它是一种二进制的格式 比使用 xml

2017-08-28

Teleport+Ultra+中文简体破解版

很不错 对网页开发的学习有帮助

2017-08-16

Gh0stVC6到VS2010迁移所有问题的解决方法

gh0st 由VC6.0开发的工程项目,移植到VS2010环境下,会出现各种错误和警告,此类错误多数是由编译器和环境不兼容导致,除修改工程下的某些属性参数外,还需手动修改编译过程中出现的一些错误。

2017-08-15

SSDTHook实现进程保护

SSDT 的全称是 System Services Descriptor Table,系统服务描述符表。 这个表就是一个把 Ring3 的 Win32 API 和 Ring0 的内核 API 联系起来。 SSDT 并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址、服务函数个数等。 通过修改此表的函数地址可以对常用 Windows 函数及 API 进行 Hook,从而实现对一些关心的系统动作进行过滤、监控的目的。 一些 HIPS、防毒软件、系统监控、注册表监控软件往往会采用此接口来实现自己的监控模块。

2017-06-09

SkinSharp开发库+百款皮肤+皮肤编辑器

SkinSharp又称Skin#,是Windows环境下一款强大的换肤组件。通用换肤库(SkinSharp)能在软件添加换肤功能,支持所有主流的编程语言,比如C++、Delphi、VB6、.net、易语言等等。

2017-05-24

USB 摄像头

USB 摄像头, 亲测可编译可运行。

2017-05-16

minhook-1.3.2

对windows API钩子感兴趣的人都知道有一个优秀的库被微软命名为'Detours'。它真的很有用,但是它的免费版本(Express)是不支持X64。它的收费版本(Professional)支持x64,但是对我来说太昂贵了。微软说它值一万美元。 因此我决定从零开始写我自己的库。但是我没有将Detours的功能完美的复制到我的库中,它仅有API钩子功能,因为这就是我想要的。

2017-05-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除