1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > c语言字符串注入命令 C语言基础之输入输出 常量定义 随机数 动态链接库的注入 数

c语言字符串注入命令 C语言基础之输入输出 常量定义 随机数 动态链接库的注入 数

时间:2019-02-17 05:03:27

相关推荐

c语言字符串注入命令 C语言基础之输入输出 常量定义 随机数 动态链接库的注入 数

cpp:cplusplus

putchar('a');// 输出一个字符

printf格式化输出函数,f就是format的缩写

puts(字符串); // 输出字符串并换行

getchar();// 输入一个字符

scanf格式化输入函数

gets(); // 输入字符串

h是head的简称,C语言分为源文件和头文件,源文件一般包含代码,头文件一般包含一些定义、声明。

#include

#include

#include

void main() {

char name[30];

int age;

// 输出字符串

printf("请输入你的姓名:\n");

// 输入字符串时需要指定界限。#字符串的值就是它的首地址#

scanf_s("%s", name, 30);

// scanf_s("hehe%s", name, 30); // 此时需要完全匹配格式控制才能正确赋值,否则数据无效。如输入hehea则name为a

printf("请输入你的年龄:\n");

// 输入整数

scanf_s("%d", &age);

printf("你是:%s,年龄是:%d\n", name, age);

// 系统执行命令

system("ipconfig");

// 暂停

system("pause");

// 参数分别是0:代表系统弹出;消息内容;消息标题;对话框类型

MessageBoxA(0, "没有网络连接!", "错误", 1);

// 参数分别是0:代表系统启动;open:打开、print使用打印机打印文件;指令;

// 第4、5个参数默认值都为0;

// 最后一个参数0:隐藏窗口、1:正常、3:最大化、6:最小化

ShellExecuteA(0, "open", "calc", 0, 0, 1);

// 打开网页

ShellExecuteA(0, "open", "", 0, 0, 1);

// 设置鼠标位置

SetCursorPos(200, 300);

// 单机鼠标左键

mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);

mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

Sleep(1000);

// 杀进程

system("taskkill /f /im iexplore.exe");

int num = 9;

// 按照16进制打印num的内存地址

printf("%x", &num);

printf("the num's value is : %d", num);

system("pause");

}

include时如果引用的是系统自带的头文件则使用<>,如果引用的是自定义的头文件则使用""。

调试时可以加断点对值进行修改,开始调试后,再调试 -> 窗口 -> 内存 -> 内存1,根据打印的内存值查找内存,右键值可以编辑值即修改。

常量定义

#define PI 3.14

const float PI = 3.14;

define只是定义一种符号,在编译期间用于替换后面的值。

const定义的是一个固定不变的变量,不可以在代码中修改,但可以通过获取变量内存地址在外部修改其值。

数据类型:有符号数据越界会产生错误、无符号数据越界会溢出。

随机数:

#include

#include

#include

void main() {

// 定义时间类型的变量

time_t time1;

// time方法:获取时间并赋值给time1变量

unsigned int hehe = (unsigned int)time(&time1);

// %u是无符号整型

printf("num: %u\n", hehe);

// 随机数发生器

srand(hehe);

int num = rand() % 100;

printf("num: %d", num);

getchar(); // 等待用户输入字符

}

写动态链接库dll文件时,函数需要用_declspec(dllexport)声明,且需要把项目的配置类型由“应用程序(.exe)”修改为“动态库(.dll)”,编译后用DllInject.exe注入工具进行注入。

修改配置类型步骤:

项目右键 -> 属性 -> 常规 -> 配置类型

注入步骤:

打开注入工具 -> 选择动态链接库文件 -> 加载时执行函数(即要注入的函数名)

切记:写动态链接库文件时必须用.c文件后缀,.cpp文件注入时会提示“动态链接库文件未导出”的相关错误信息。

注入例子:

#include

#include

void haha() {

for (int i = 0; i < 5; i++) {

// 有start表示并行执行命令,没有start则是线性执行命令

system("start calc");

}

}

_declspec(dllexport) void heihei() {

haha();

}

整型数据类型:

int num = 123;

printf("%6d\n", num); // 限定长度

printf("%ld\n", a); // 输出长整形整数

printf("%06d\n", num); // 长度不足则前面补0

printf("%-6d\n", num); // 左对齐

printf("%-06d\n", num); // 左对齐时前面补0无效

输出结果:

123

123

000123

123

123

字符串截取例子:

char name[30] = "heihei";

printf("%.2s\n", name); // 从前面截取字符串

输出:

he

浮点数例子:

float pi = 3.14;

printf("%f\n", pi); // 整数部分全部输出,小数部分输出6位(四舍五入或补0满足小数位数)

printf("%.1f\n", pi); // 保留一位小数

输出:

3.140000

3.1

printf("%%"); // 输出: %

%o:以无符号的八进制形式输出整数

%x:以无符号的十六进制形式输出整数

%u:以无符号的十进制形式输出整数

%e:以标准指数形式输出单、双精度实数

%g:选用输出宽度较小的格式输出实数且不输出无意义的0,根据数值大小自动选择用f格式或e格式输出。

goto无条件转移语句

说明:“语句标号”必须是合法的标识符,不能用整数做标号。

作用:与if语句一起构成循环结构、从多层循环体的内层跳到指定位置等。

目前不推荐使用goto语句。

与if构成循环的例子:

int i = 0;

int count = 0;

ADD: if (i < 100) { // 这里的ADD就是语句标号

i++;

count += i;

goto ADD;

}

printf("sum=%d\n", count);

输出结果:

sum=5050从多层循环体中跳出的例子:

for (int i = 0; i < 9; i++) {

for (int j = 2; j < 9; j++) {

if (j == i) {

printf("i = %d, j = %d\n", i, j);

goto OVER;

}

}

printf("这里还有其他语句");

}

OVER: printf("game over\n");

输出结果:

这里还有其他语句

这里还有其他语句

i = 2, j = 2

game over 例子没什么实际意义,就是说明下goto语句可以跳出多层循环。

c语言字符串注入命令 C语言基础之输入输出 常量定义 随机数 动态链接库的注入 数据类型介绍 goto语句的使用...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。