自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (4)
  • 收藏
  • 关注

原创 注入

2021-02-28 11:19:25 76

原创 绑定导入表

2021-02-28 10:07:02 96

原创 AIT表、导入表

导入表你要用到别的DLL的时候,你首先要告诉系统,我用了哪些DLL?我用了哪些DLL里面的函数?也需要提供这样一份 清单

2021-02-27 10:08:47 154

原创 移动导出表-重定位表

2021-02-27 10:06:39 173

原创 重定位表

重定位表的作用:一个EXE里面要用到一些DLL,DLL编译后的分配的内存地址会有冲突,系统会重新给DLL分配到其它内存地址空间,由于程序里面的常量是写死的内存地址,重新分配空间地址会 导致常量内存地址保存的值不 一样了,这样就需要用重定位表来解决这个 问题...

2021-02-26 16:26:30 197

原创 程序加载过程

程序启动的时候根据导出表,导入表,重定位表做一些 初始化的工作

2021-02-26 15:33:39 342

原创 导出表

导出表导出表相当于提供了一份清单,告诉使用这个模块的人,我有哪些函数?我的函数名叫什么?我的函数在哪里?

2021-02-26 15:09:00 77

原创 动态链接库的创建和使用

去掉 __stdcall ,C语言动态调用DLL代码#include <stdio.h>#include <Windows.h>//定义函数指针 typedef int(*lpPlus)(int, int);typedef int(*lpSub)(int, int);typedef int(*lpMul)(int, int);typedef int(*lpDiv)(int, int);int main(int argc,char* argv[]){.

2021-02-26 11:29:21 129

原创 静态连接库的创建和使用

注意调用LIB的文件必须是扩展名CPP文件,如果是扩展名是C会提示:无法解析外部符号

2021-02-26 08:44:49 89

原创 PE结构里面新增节、扩大节、合并节

2021-02-25 16:41:26 306

原创 PE文件任意代码空白区添加代码

根据PE可选属性sizeofimage 分配空间根据PE可选属性 SizeOfHeaders 复制头,包括了所有头和节表对齐后的大小根据节表的PointerTORawData 确定文件中开始拷贝的位置,根据节表属性 VirtralAddress 知道要复制到的位置根据节表的SizeOfRawDate 知道需要复制的大小...

2021-02-25 14:23:14 255

原创 汇编指令CALL的硬编码E8 和 JMP 的硬编码E9 后面参数的计算方法

试验的C函数代码如下:#include <stdio.h>void function(){ printf("hello");}int main(int argc,char* argv[]){ function(); return 0;}反汇编后的代码如下call 硬编码是E8 , 但是后面的 1E B3 FF FF 是怎么计算出来的呢?E8 后面的硬编码计算公式如下假设我们需要获得E8 后面的硬编码为XX=真正要跳转的地址-E8这条指令的下一行地

2021-02-25 09:39:30 5469 3

原创 OD通过已知函数名称下断点

第一步 在命令行输入 bp 函数名称,按回车第二步 点击工具栏的 B 进入已加断点界面第三步 双击这个断点可以跳转到这个断点的代码位置

2021-02-25 08:52:59 392

原创 malloc 堆内存申请函数

#include <stdio.h>#include <stdlib.h>#include <malloc.h>int main(int argc,char* argv[]){ int* ptr; ptr = (int*)malloc(sizeof(int) * 128); printf("%x \n", ptr); return 0;}

2021-02-24 16:44:10 129

原创 extern 关键字

在 源文件里面 声明了一个变量头文件里面写 extern 就是告诉用他的人,已经在别的文件里面声明过了,否则会报重复声明

2021-02-24 16:22:07 53

原创 RVA 内存相对偏移地址 ,FOA文件相对偏移地址

RAV 内存相对偏移地址 ,FOA文件相对偏移地址

2021-02-24 16:10:47 244

原创 PE结构 节表

节表位置的计算:DOS头大小+标准PE头大小+标准PE头SizeofoftimHeader的值

2021-02-24 13:20:36 637

原创 C语言联合体 union

联合体 union联合体就是一块共享内存,想用哪个就用哪个只按最大的类型分配一块内存空间,只保存一个值,可以通过不同的变量类型取出这块空间的不同的值匿名联合体结构体也可以用这种匿名的方式使用...

2021-02-24 10:35:12 93

原创 PE结构

硬盘与内存对齐方式1、分节节约硬盘空间2、内存中多开,可以节约内存空间,只读数据只开一份,可读可写多开。DOS 头e_magic 标志位e_lfanew :PE文件开始的地方如下图从文件开始的地方算,第E8个字节就是PE文件开始的地方*号重要标准PE头*号重要可选PE头*号重要...

2021-02-23 17:04:37 137

原创 C 语言一般语法

#define 宏替换#defin带参数的宏一个比较大小函数用宏替换的方法头文件头文件重复包含问题解决重复包含的问题动态申请内存typedef 给类型取别名例子 给 unsigned int 类型取别名 size_t typedef unsigned int size_t;...

2021-02-22 16:45:42 81

原创 汇编与C语言的的位运算

算术移位指令左移最低位是补0右移最高位是什么就补什么逻辑移位指令逻辑左移和算术左移是一样的效果逻辑右移高位直接补零循环移位指令带进位的循环移位指令就是把CF位看成了整个字节的一部分进行移位C语言的为运算C语言有符合右移的汇编代码C语言无符合右移的汇编代码C语言有符合和没符号左移的汇编代码...

2021-02-22 11:39:12 259

原创 c语言 函数指针

函数指针因为函数宽度的不确定,所有不能做 ++ – 加整数 减整数的运算,可以做比较运算函数指针的赋值下面是等效的用函数指针调用函数打印出函数指针类型的宽度宽度是4强制转换数据类型赋值给函数指针通过函数指针调用数据区的函数代码把自己写的函数,转换为16进制代码,放在一个数组里面,然后通过指针函数调用这个数组的地址,相当于就是调用了这个函数。...

2021-02-21 16:10:39 83

原创 C语言的结构体指针, 数组指针

结构体指针的定义方法 结构体名加*数组指针px 是数组指针的名字,类型是char* , 宽度是4个字节(*)[5] 是这个数组指针类型,宽度是5个字节运行结果一维数组指针二维数组指针三维数组指针...

2021-02-21 15:23:20 177

原创 C语言指针 & 和 *用法(三)

模拟CE4个字节4个字节的遍历一个100个元素的数组,4个字节4个字节的查找里面的地址字符串编译后结尾加0指针函数指针函数就是一个函数,因为返回值是个*类型指针数组一个数组,里面存的是带*号类型结构体指针星号*详解,返汇编代码char* p1p1 里面存储的是一个地址p1 p1前面加号就是获取p1里面存储地址对应的值两种写法汇编代码是一样的结论两个** 类型的反汇编两个星** 做加法加星 和【】两种写法反汇编是一样的指针总结...

2021-02-21 10:48:43 546

原创 C语言指针 & 和 *用法(二)

int arr[5]={1,2,3,4,5}int* x=&arr[0]; //取首地址int* px=arr; //也是取首地址,是编译器允许的简写方法,就是上面这行的简写用指针循环取数组的值写法

2021-02-11 16:35:44 633 1

原创 C语言指针 & 和 *用法

指针的7个特征写法:*号可以写在类型名后面,也可以写在变量名前面,效果是一样的。int* x;(推荐写法)int *x;完整写法简写int z; z=(int)10int z; z=10int* z; z=(int*)10不能简写怎么做++ 运算去掉一个*后,数据宽度是多少就加多少1个星*#include <stdio.h>#include <string.h>void fun(){ char* a;

2021-02-09 20:53:51 1347

原创 C语言 switch语句 与反汇编

三条分支的switch 语句的汇编结构#include <stdio.h>#include <string.h>void Fun(int x){ switch (x) { case 1: printf("1"); break; case 2: printf("2"); break; case 3: printf("3"); break; default: printf("5"); break; }}int mai...

2021-02-09 12:39:35 206

原创 sizeof关键字判断类型的大小,#pragma pack字节对齐定义及结构体对齐方式

1字节对齐

2021-02-08 17:10:29 87

原创 C语言结构体struct aaa{};,作为参数和返回值的汇编代码

全局变量结构体#include <stdio.h>struct MyStruct{ int a; char b; short c;};MyStruct a;int main(int arc,char* argv[]){ a.a = 1; a.b = 2; a.c = 3; return 0;}全局声明结构体返汇编代码局部变量声明结构体#include <stdio.h>struct ..

2021-02-06 10:49:38 595 1

原创 多维数组,编译器找数据的方法

2021-02-05 15:44:50 111

原创 桶排序,数不特大,数之间间隔个比较小用这个是最快的排序方法

2021-02-05 14:50:35 75

原创 C语言IF语句的汇编 代码

#include <stdio.h>int g_n = 10;void Plus(int x,int y){ if(x > y) { g_n = x; }}int main(int argc,char* argv[]){ Plus(2,1); return 0;}小于等于

2021-02-03 16:58:25 1175

原创 如何从汇编代码判断函数有几个参数

接上图

2021-02-03 16:22:55 1423 1

原创 C语言 全局变量和局部变量的特点

全局变量的特点C语言做一个加法运算结果放到全局变量#include <stdio.h>int g_n = 10;void Plus(){ int i = 10; int k = 20; g_n = i + k;}int main(int argc,char* argv[]){ Plus(); return 0;}反汇编结果局部变量的特点...

2021-02-03 16:00:27 1052

原创 C语言数据类型 ,字符,字符处理头文件 string.h

2021-02-03 14:53:39 261

原创 C语言数据类型,float单精度浮点的计算方法

什么都不写默认是有符号的,如果只写unsigned 或signed 默认是int 类型浮点数转进制整数部分除2余数是0就写0 ,不是0就写1,除完整数部分是0就结束小数部分乘2整数部分是0就写0,不是0就写1,乘完结果小数部分是0就结束,或者设置一个精度,精度到几位就用小数部分乘多少位小数部分,不设精度永远算不完小数点移位 保证左边只有一个 10.25转换为二进制例子转为 16进制的结果C语言加返汇编测试#include <stdio.h>...

2021-02-03 13:43:50 2199

原创 调用约定(函数的参数压入堆栈的顺序和平衡堆栈的位置,可以使用调用约定关键字自己定义)

C和C++默认使用 __cdecl 调用约定__cdecl 外平栈 C代码#include <stdio.h>int __cdecl Plus1(int x,int y){ return x + y;}int main(){ Plus1(1,2); return 0;}__cdecl 返汇编__stdcall 内平栈#include <stdio.h>int __stdcall Plus2(int x, int y){

2021-02-02 16:59:36 201

原创 裸函数 __declspec(naked),C语言是怎么变成汇编的,用裸函数加汇编实现一个最简单的加法函数

裸函数:裸函数定义:__declspec(naked)加汇编代码RET 可以正确返回,否则报错#include <stdio.h>// 裸函数void __declspec(naked)Plus(){ __asm { ret }}int main(){ Plus(); return 0;}用裸函数加汇编实现一个加法#include <stdio.h>// 裸函数int __declspec(naked)Plus(int x

2021-02-02 09:27:48 873

原创 C语言有参函数嵌套调用,反汇编代码

C语言代码#include <stdio.h>int Plus1(int x, int y){ return x + y;}int Plus2(int x, int y,int z){ int t; int r; t = Plus1(x, y); r= Plus1(t, z); return r;}int main(){ Plus2(1,2,3); return 0;}汇编代码 Plus2000D17D8 push

2021-02-01 16:40:29 229

原创 C语言有参函数,反汇编代码

C语言代码#include <stdio.h>int Plus1(int x, int y){ return x + y;}int main(){ Plus1(1,2); return 0;}汇编代码00B717C8 push 2 //第二个参数00B717CA push 1 //第一个参数00B717CC call 00B713A2 //调用函数00B717D1 add

2021-02-01 15:33:32 167

DriverMonitor.zip

驱动安装工具

2021-01-14

VirtualKD-Redux-2020.2

如果VirtualKD-3.0不能连接成功,用这个试试,方法一样,亲测有效

2020-12-23

DebugView 微软官方原版

微软官方原版

2020-12-23

空空如也

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

TA关注的人

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