自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 资源 (16)
  • 收藏
  • 关注

原创 VS2019 驱动两个函数地址相同?

VS2019对于两个函数名不同,但是函数代码实现相同的情况,在链接时会将两个函数合并为同一个代码段,导致两个函数的地址相等。可以看出使用DEFINE_FUNC宏生成的FuncIndex_1和FuncIndex_2两个函数地址相等。注意:上面的实现方式,index必须要使用,否则仍然可能被链接优化为相同地址。那么要如何让两个函数地址不同呢?1.禁用链接选项:启用COMPAT折叠。2.让两个函数有不同代码。

2023-12-29 13:57:54 472

原创 UEFI+win7+多系统安装

(2)解压U盘sources\install.wim从中找到bootmgfw.efi改名拷贝到U盘EFI\boot\bootx64.efi,可参考https://www.cnblogs.com/xuliangxing/p/7649123.html。(1)从已安装的Win7系统下C:\Windows\Boot\EFI\bootmgfw.efi改名拷贝到U盘EFI\boot\bootx64.efi。物理主机先安装的Windows10,同时需要安装Windows7的双系统。(3)下载支持UEFI的安装镜像。

2023-08-11 14:02:45 1268

原创 Vmware+CentOS+KGDB内核双机调试

其中一台作为调试机,另一台则作为被调试机。如下图,CentOS7.9x64为被调试机,CentOS7.9x64-Debugger为调试机。

2023-07-20 15:38:49 1014

原创 WinDbg调试命令

windbg相关命令

2023-07-20 10:40:18 763

原创 Ubuntu18编译内核源码,并调整版本号

默认情况下,上面的命令会下载最后一个系统补丁版本,比如:4.15.0-212-generic。编辑/etc/apt/source.list,注释掉跟bionic-updates相关的源。下载ubuntu18 4.15.0-20-generic内核源码,默认情况下编译的内核版本会是4.15.17,我们需要调整版本号跟系统默认的一致,即4.15.0-20-generic。安装成功路径为/usr/src/,解压压缩包:tar -jxvf linux-source-4.15.0.tar.bz2。

2023-06-16 10:19:14 1302

原创 CentOS7.9 systemd-219源码编译

CentOS7.9 systemd-219源码编译

2023-05-30 11:06:37 519

原创 CentOS 32位系统下载地址

CentOS2.x - 6.x 32位下载地址:Index of / (centos.org)CentOS7.x 32位下载地址:Index of /altarch (centos.org)

2022-12-29 13:45:31 2366

原创 VMware Workstation16/17安装CentOS7.9 32位卡住解决方法

在使用VMware 16/17一系列默认安装配置时,均无法正常安装CentOS7.9 32位。安装过程中,安装界面卡住,鼠标键盘均无法操作,键盘的Caps Lock和Scroll Lock双闪。由于VMware Workstation是兼容ESXi的,所以猜测只要将兼容性选择ESXi6.7也可以正常安装。果然是能够正常安装的,同时需要注意CPU个数需要设置为1,否则安装出来的系统,图形界面也会卡死。感觉像是挂载交换分区系统时,系统崩溃了。为了排查安装过程中出现何种错误,需要通过字符安装界面进行安装。

2022-12-29 10:26:16 4589 8

原创 vs2019驱动开发禁用release生成pdb文件

vs2019驱动禁用pdb

2022-12-09 10:54:30 779

原创 GmSSL生成国密双证书

GmSSL生成国密证书

2022-10-10 09:48:19 1167 1

原创 shell遍历文件名含空格的目录

遍历普通目录(适用于文件/目录名中不含空格):for file in `ls -A /tmp/test/samples`do echo $filedone对于文件/目录名中含空格的情况,上面方法无法正常遍历,如下图目录的文件列表:使用上面的方法遍历结果,截图如下:很明显遍历的结果是不正确的,原因是因为shell中的分隔符默认是空格或制表符,由环境变量IFS指定。解决方法有两种第一种是更改IFS变量,以换号符作为for循环的分隔符:oldIFS=$IFSIF.

2021-12-12 16:33:10 3021

原创 Windows makecert生成代码签名证书

由于自2021年微软宣布弃用SHA-1算法的代码签名,而采用新的SHA-2算法代码签名。SHA-1 签名内容要停用 | Microsoft Docs同时代码签名证书颁发厂商也不再颁发SHA-1的证书。但由于部分Windows7系统(未开启自动升级),并不支持SHA-2代码签名机制(可安装系统补丁来解决此问题),使得使用SHA2证书签名的文件并不能通过Windows的校验机制,从而程序无法正常运行。另外针对内核代码,需要双证书签名,使用SHA-2证书和微软同时签名。开发者使用SHA-2证书签名内核后,

2021-09-12 16:19:24 4196 1

原创 杂记(不断更新...)

#define MACRO(x) ((x) + 3) & (~3))

2021-06-21 16:59:49 120

原创 Windows命令行双击获取管理员权限

@if exist "%SystemRoot%\SysWOW64" path %path%;%windir%\SysNative;%SystemRoot%\SysWOW64;%~dp0@bcdedit >nul@if '%errorlevel%' NEQ '0' ( goto UACPrompt) else ( goto UACAdmin):UACPrompt@%1 start "" /B mshta vbscript:CreateObject("Shell.Applica...

2021-06-01 11:26:48 1381

原创 Linux sem_trywait实现sem_timedwait

sem_timedwait说明 int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout); 其中第2个参数struct timespec *abs_timeout要求为绝对时间,如果手动将系统时间往后修改会导致sem_timedwait长时间阻塞sem_trywait说明 int sem_trywait(sem_t *sem); sem_trywai...

2021-04-12 16:48:10 2096

原创 C/C++ Openssl API RSA加解密文件

生成私钥openssl genrsa -out prikey.pem 1024生成公钥openssl rsa -pubout -in prikey.pem-out pubkey.pem#include <stdio.h>#include <openssl/rsa.h>#include <openssl/pem.h>#include <openssl/err.h> const char *publicKey = "-----BEGIN P...

2021-04-12 16:14:25 484

原创 Linux segfault错误排查

Linux下一般情况程序出现段错误异常崩溃时,并不会产生core文件,此时可借助/var/log/messages中打印的错误信息进行排查。如下错误信息:segfault at 7f30beffe000 ip 00007f30c6eebda9 sp 00007f30a7ffc4a0 error 4 in libc-2.17.so[7f30c6e56000+1c3000]其中,异常在libc-2.17.so库中,00007f30beffe000为出错地址,7f30c6eebda9为指令地址,00007

2021-04-12 15:38:37 8590 6

原创 汇编参数传递

x86 32位程序通过栈传递参数,压栈顺序从右至左 x64 64位程序通过寄存器+栈传递参数,前6个参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9,第7个及以后的参数通过栈传递,压栈顺序从右至左...

2021-04-12 15:14:48 1236

原创 Linux sed处理变量中含有/

若需要传递变量给sed命令,需要将单引号替换使用双引号。比如:echo "dir = abc" | sed 's/\(^dir[ \t]\{0,\}=[ \t]\{0,\}\).\+$/\1${CaDir}/g'替换为echo "dir = abc" | sed "s/\(^dir[ \t]\{0,\}=[ \t]\{0,\}\).\+$/\1${CaDir}/g"由于/是sed命令格式中的特殊字符,所以如果遇到传入sed命令的变量中含有/,则需要转义正确做法:...

2020-08-12 11:08:34 1602

原创 生成GmSSL证书吊销列表

GmSSL生成国密证书请查看:GmSSL证书生成使用以下脚本来吊销相生成的证书:#!/bin/sh#Generate GM certificate crl file#Author : xiejianjun#Date : 2020-07-31CurPath=`dirname $(readlink -f $0)`GmsslRootPath=/projects/GmSSLGmsslBin=${GmsslRootPath}/apps/gmsslDemoCaDir=${GmsslRootPa

2020-08-04 11:29:32 530 3

原创 Hook Linux内核系统调用

百度搜索到Hook Linux内核系统调用的方式,通过修改系统调用表syscall_table相应的地址,查找syscall_table的方式主要有3种:通过查看/boot/System.map.*文件,从sys_close遍历到loops_per_jiffy来查找到syscall_table,代码如下: unsigned long **find_sys_call_table(void)...

2020-04-09 20:26:24 776

原创 GDB打印同名全局变量名不准确

有如下程序逻辑结构,主程序中调用两个动态库,动态库中,含有相同名字的全局变量,在后加载库的函数中,更改全局变量值,使用GDB查看时,值未更改。主程序代码如下:#include <stdio.h>#ifdef _WIN32#include <Windows.h>#else#include <dlfcn.h>#include <unistd...

2020-03-11 10:26:09 613

原创 GDB打印变量值不正确

最近在工作中遇到使用GDB查看调试版程序变量值不正确的问题,但是使用printf输出变量值是正确的,现象如下图:源码如下:#include <stdio.h>void func(int *p){ printf("p=%p\n", p); p = (int *)0x101; printf("p=%p\n", p);}...

2020-03-11 09:40:07 1278

原创 Shell全教程(收藏)

暂时先收藏地址,有时间进行整理http://c.biancheng.net/shell/

2020-03-07 15:24:00 159

原创 Openssl源码简要说明

openssl 源代码主要由eay 库、ssl 库、工具源码、范例源码以及测试源码组成。eay 库是基础的库函数,提供了很多功能。源代码放在crypto 目录下。包括如下内容:asn.1 DER 编码解码(crypto/asn1 目录),它包含了基本asn1 对象的编解码以及数字证书请求、数字证书、CRL 撤销列表以及PKCS8 等最基本的编解码函数。这些函数主要通过宏来实现。 抽象 IO(...

2019-12-16 11:40:09 420

原创 GmSSL编程实现gmtls协议C/S通信(非BIO版本)

参见GmSSL编程实现gmtls协议C/S通信(BIO版本)服务端:#include "openssl/bio.h" #include "openssl/ssl.h" #include "openssl/err.h" #include <string.h>#include <sys/types.h>#ifndef WIN32 #include...

2019-08-21 15:18:46 4263 20

原创 GmSSL编程实现gmtls协议C/S通信(BIO版本)

GmSSL实现gmtls协议时,服务端必须设置双证书(签名证书和加密证书)才能正常通信。如果服务端只使用单证书(加密证书),会出现如下错误:SSL routines:gmtls_construct_ske_sm2:internal error:ssl/statem/statem_gmtls.c:742签名证书和加密证书的生成可以使用TASSL开源项目中的Tassl_demo/mk_tls_ce...

2019-08-21 15:15:45 5256 3

翻译 tar文件格式解析

源文地址:http://www.fileformat.info/format/tar/corion.htmTAR是磁带存档程序 (tape archiver) 的首字母缩写。Unix Tar是将多个文件存储为未压缩的单个文档文件的程序。1.标准格式 单个tar文件包含多个记录,单个记录包含512个字节。虽然这种格式用于磁带上,但是也常用于其他媒体。 一个头记录代表单个归档...

2019-06-28 15:34:15 11731

原创 GmSSL证书生成及验证C/S通信双向认证

1.https://github.com/guanzhi/GmSSL下载源码,解压后到源码目录下执行以下命令: ./config make make install //必须安装,否则后续执行gmssl会因为打开openssl.cnf出错。gmssl内部处理问题2.证书生成准备: cd apps/demoCA/ mkdir certs crl newcerts priva...

2019-06-04 14:57:43 7934 14

原创 Linux内存管理回收机制

Linux内存管理回收机制1.Linux内存管理简介 Linux将所管理的内存划分为内存节点(node)、内存分区(zone)和页框(page)。1.1.内存节点(node) 依据CPU访问代价的不同来划分。多CPU环境下,本地和远端内存属于不同节点。1.2.内存分区(zone) 在内存节点上,划分多个不同分区:DMA、Normal和HighMemory(可选)。...

2019-04-19 15:01:21 3206

原创 Linux OOM-killer机制说明

1.什么是OOM-killeroom_killer(out of memory killer)是Linux内核的一种内存管理机制,在系统可用内存较少的情况下,内核为保证系统还能够继续运行下去,会选择杀掉一些进程释放掉一些内存。通常oom_killer的触发流程是:进程A想要分配物理内存(通常是读写内存)->触发缺页异常->内核去分配物理内存->物理内存不足,触发OOM。1......

2019-04-15 09:52:46 4070 1

转载 Linux top命令字段说明

转载自:https://www.cnblogs.com/zhoug2020/p/6336453.htmlVIRT:virtual memory usage 虚拟内存1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量RES:resident memory usage 常驻内存1、进...

2019-04-11 10:32:02 1437

原创 C/C++注册CTRL+C退出程序

#include <signal.h>static bool g_bStop = false;void inner_signal_handler(int signum){ g_bStop = true;}static void InnerRegisterSigaction(){ struct sigaction act; act.sa_handl...

2019-04-01 10:33:10 1810

原创 根据输入字符串,输出所有字符能组成的串(面试题)

比如输入"abc",得到abc, acb, bac, bca, cab, cba。代码如下: #include &lt;stdio.h&gt;#include &lt;vector&gt;using namespace std;void func(vector&lt;char&gt; &amp;chList, vector&lt;char&gt; &amp;travelList...

2018-09-06 14:38:22 608

原创 解决网络延迟200ms问题

最近在项目中引入了HPSocket网络框架,但是在测试过程中发现网络始终延迟200ms,最终查找到问题原因是未启用Socket的TCP_NODELAY。在以下地址也有相关的讨论:https://serverfault.com/questions/834326/questions-about-nagle-vs-delayed-ackTCP/IP协议中,无论发送多少数据,总是要在数据前面加上协...

2018-09-05 17:33:34 11655

原创 Windows内核进程创建和模块加载通知的先后顺序

Windows内核进程创建和退出通知主要通过调用PsSetCreateProcessNotifyRoutine或者PsSetCreateProcessNotifyRoutineEx来注册事件通知函数,在进程创建和退出时,系统会调用注册的事件通知函数;可执行模块加载通知调用PsSetLoadImageNotifyRoutine或PsSetLoadImageNotifyRoutineEx来注册事件通知...

2018-08-22 00:47:17 943

转载 WinDBG常用命令

条件断点 条件断点:断点指令 + “j(Excecute If-Else) 和 gc (Go from Conditional Breakpoint)”            形如:bp Address "j (Condition) 'OptionalCommands'; 'gc' "a.普通变量(非结构体) "j (poi(MyVar)&gt;5) '';'gc'" 在代码...

2018-08-21 15:02:17 641

原创 opencv自动扣图代码实现

#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include &lt;iostream&gt;#include &lt;process.h&gt;#include &lt;windows.h&gt;using namespace std;using namespace cv...

2018-08-01 00:22:32 2315

原创 Windows鼠标键盘(PS2)驱动框架

常用的鼠标类型:串口鼠标、PS/2鼠标、USB鼠标(HID)常用的键盘类型:串口键盘、PS/2鼠标、USB键盘(HID)非HID鼠标键盘(PS/2鼠标键盘)物理配置方式上图左边展示了键盘鼠标设备通过独立的控制器连接到系统总线。一种典型的配置由通过i8042控制器操作的PS/2类型键盘,和通过串口操作的串口鼠标组成。上图右边展示了键盘鼠标设备通过集成的键盘鼠标控制器连接到系统总线。一种典型的配置由通...

2018-05-24 13:57:54 8674

翻译 未能解决的外部符号:__security_cookie

英文原地址:查看原文编译环境:VS2010+WDK1.7+VisualDDK今天在编译Windows驱动时,出现"ntoskrnl.lib(loadcfg.obj) : error LNK2001: unresolved external symbol ___security_cookie"。解决方法:1.禁用VS的缓冲区安全检查,在项目属性C/C++下面的代码生成选项页配置成No

2017-04-14 14:00:46 755

CodeSignCertUtil.zip

适用于生成代码签名的测试证书,包含使用生成的证书对二进制文件.exe .dll .sys文件 进行签名

2021-09-12

ProcessMonitor.zip

Windows ProcessMonitor

2021-05-23

gdb_global.rar

gdb打印不同动态库,同名全局变量值不正确的测试代码 可以参见我的文章<<GDB打印同名全局变量名不准确>>

2020-03-11

PE文件资源修改工具包

PE文件资源修改工具,可修改PE文件的各种资源:字符串、图片等。含有使用Resource Hacker工具

2018-09-03

Opencv动态扣图C/C++源代码

C/C++基于开源opencv库扣取图片前景色,源代码C++实现,支持手动指定图片背景和前景部分 。

2018-08-01

Window文件监控微过滤驱动

Windows文件微过滤驱动(基于minifilter),监控文件的相关操作(如打开、关闭等),并通知应用层进程

2018-07-25

Windows监控打印机文件打印事件

监控windows打印机打印文件的事件通知,列举系统打印机详细列表,VS2010项目工程详细源码 。

2018-07-24

IrpTrace2.0

Windows驱动调试工具,IrpTrace2.0监控驱动IRP执行情况以及状态,非常方便排查驱动问题所在

2018-07-06

Windows虚拟鼠标键盘驱动

Windows虚拟鼠标键盘驱动 完整源代码包含visual studio项目文件

2018-01-18

硬盘分区shell脚本

用脚本实现磁盘分区 mbr_patition.sh脚本采用fdisk进行分区 partition.sh采用parted工具来实现分区

2013-05-16

sleep和随机数字批处理脚本

用Window批处理bat脚本实现睡眠sleep和产生随机数的功能实现,方便于自动化测试以及相关的工程应用

2013-05-16

Samba服务器配置模板

linux下samba服务器的一个配置模板

2013-05-02

vss卷影副本代码实例

VSS卷影副本代码实例,功能删除所有旧的卷影,然后在指定的逻辑卷上建立卷影

2012-03-23

VSS卷影副本 学习资料

网络上关于卷影副本的资料太少,这是我整理的资料,希望能帮到大家使用,有助于VSS卷影副本的代码开发 。

2012-03-23

Unix/Linux 下GCC使用详解手册 pdf格式

对于那些想在Linux下用C/C++开发的程序员来说,gcc是必要的工具,这本电子书详细介绍了gcc的常用用法,是gcc入门工具书

2010-02-26

Fedora 10 安装中文指南

目录 1. 从 Fedora 7/8/9 升级 2. 配置sudo • 编辑 sudoer 文件 • 添加用户到 wheel 组 • 测试sudo 3. 配置 Yum • 基本命令 • 导入 Fedora GPG 密钥 • 第三方软件仓库 • yum 的图形界面 • 配置 yum 以使用代理 • yum 插件 4. 配置服务 5. 安装显卡驱动 • 安装 nvidia 显卡驱动 • 安装 ati 显卡驱动 6. 安装微软字体 7. 配置 Nautilus 文件管理器 • 在相同窗口中打开文件夹 • 在终端中打开 • Gnome 启动时打开 Num Lock 键 8. 配置 Firefox • Acrobat 插件 • Flash 插件 • Mplayer 插件 • Java 插件 • MMS 流媒体插件 • 设置退格键 • IPv6 9. 配置 E-mail 客户端 10. MP3 和音频播放 • Rhythmbox • Amarok • Audacious • XMMS 11. DVD 和 视频 • DVD 播放 • 视频文件播放 • Totem • Mplayer/SMPlayer • VLC • Kaffeine • RealPlayer • Avidemux 12. IRC 客户端 • konversation • Xchat 13. MSN 客户端 • Empathy • Pidgin • Kopete • aMSN 14. 制作、刻录和备份 CD/DVD • Sound-Juicer (音乐榨汁机) • GnomeBaker • k3b • k9copy • DeVeDe 15. 下载管理器 • wxDownload Fast • kget 16. PDF 阅读器 • evince • Acrobat Reader 17. BT客户端 • Transmission • KTorrent • qBittorent • Bittorrent 18. 其它实用应用程序 • unrar • FTP 客户端 • chm 阅读器 • eMule 客户端 • linuxdcpp • 分区编辑器 • Google Earth (谷歌地球) • gtkpod • Skype 19. 访问 Windows 分区 20. 访问 Windows 共享 21. Compiz Fusion (3D桌面特效) • 官方安装包 • 非官方安装包 • 自启动 22. KDE • KDE 安装 • gtk应用程序中使用 KDE 风格 • KDE 国旗 23. JAVA • Open JDK • SUN Java

2008-12-20

空空如也

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

TA关注的人

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