2 int main() 3 { 4 struct _test { 5 int a; 6 int b; 7 int c; 8 }; 9 10 struct _test test; 11 test.a = 1; 12 test.b = 2; 13 test.c = 3; 14 15 printf("test.a = %d, test.b=%d, test.c=%d\n", test.a, test.b, test.c); 16 17 return 0; 18 } (gdb) p &…
依稀记得第一次接触Hook的概念是在周伟民先生的书中-><<多任务下的数据结构与算法>>,当时觉得Hook的本质就是拦截,就算到现在也是如此认为. 本篇文章是在x86下测试与分析跳转+offset类型的Hook,并且逆推测出热补丁的简单用法,MinHook它的中心就是覆盖重写并且可以复原.知道大概的思路后后让我们先来具体的实现MinHook再去做测试. 首先是堆的申请,这是必要也必须做的,对于微软函数HeapCreate()就不再赘述,以下是实现与卸载 NTSTATUS WI…
目录 X86 ipipe接管中断/异常 一.回顾 二.X86 linux异常中断处理 1. 中断门及IDT 2. 初始化门描述符 2.1 早期异常处理 2.2 start_kernel中的异常向量初始化一 2.3 idtentry宏(DB异常为例) 2.4 start_kernel中的异常初始化二-trap_init() 2.5 初始中断门描述符 2.5.1 IRQ 2.5.2 early_irq_init 2.5.3 init_IRQ 三.linux x86_64中断/异常处理总结 四.ipi…
工作中使用案例: struct sigaction act; act.sa_sigaction = handleSignal; act.sa_flags = SA_SIGINFO; sigemptyset(&act.sa_mask); sigaction(SIGTERM,&act,NULL); 转linux下的struct sigaction     Linux中信号相关的一个结构体struct sigaction主要在sigaction信号安装和sigqueue信号发送时会用到该结构位于…
本變數型態(Variable Type): 類 別 符號位元 位元組(bytes) 表 示 法 數 值 範 圍 整 數 有 2 int(short) -32768~0~>32767 4 long -2147483648~0~2147483647 無 2 unsigned int 0~65535 2 unsigned short 0~65535 4 unsigned long 0~4294967295 浮點數 有 4 float 10^ -38~0~10^38 8 double 10^ -308~…
问: 什么情况下使用 struct ? 答: 使用 struct 有几个前提(必须全部满足): 容忍 struct 本身的限制,如:不能继承. 值语义. 足够小(<=16字节). 如果 struct 不作为参数就行传递,可以不考虑“足够小”这个限制. 问: 为什么要“足够小”? 答: .NET 默认按值传递参数,class 拷贝的是 reference(16 字节),而 struct 拷贝的是其自身,因此 struct 不能设计的太大,否则性能上会受到影响.…
簡單的在C++裡頭與Lua交互操作 首先提供 Lua 的簡單範例 print(" Lua 2019/01/07 !!!") -- Variable monster_type = "Ghost" blood = 99.9 -- Table x_table = {, , } -- Function function f(var) * var + end 呼叫變數的辦法 int main(int argc, const char *argv[]) { string scr…
Makefile SUBDIRS = xxx aaa BUILDSUBDIRS = $(SUBDIRS:%=build-%) CLEANSUBDIRS = $(SUBDIRS:%=clean-%) .PHONY: all clean all: $(BUILDSUBDIRS) $(BUILDSUBDIRS): @echo "<===" $@ make -C $(@:build-%=%) @echo ">===" $@ @echo "\n"…
g_enterprise 目前的企業代碼,將限制使用者所能閱讀的資料內容g_prog 目前執行的作業編號,用於變換畫面顯示資料與產生系統資訊,不可變更g_code 目前執行的程式代碼(4gl)名稱,不可變更g_user 目前使用者代碼,將紀錄使用者的操作歷程與權限控制,不可變更g_qryparam 動態開窗查詢函式資料傳遞變數,使用開窗功能時須先給予相關變數g_dlang 目前使用者所選取的資料多語言語系代碼,可透過工具進行語系設定g_site 目前的營運據點名稱,可透過切換讀取不同據點的資料g…
JMM在X86下的原理与实现 Java的happen-before模型 众所周知 Java有一个happen-before模型,可以帮助程序员隔离各个平台多线程并发的复杂性,只要Java程序员遵守happen-before模型就不用担心多线程内存排序或者缓存可见性的问题 摘自周志明老师的JMM章节 程序次序规则(Program Order Rule):在一个线程内,按照控制流顺序,书写在前面的操作先行 发生于书写在后面的操作.注意,这里说的是控制流顺序而不是程序代码顺序,因为要考虑分支.循 环等…