main函数

adworld-pwn新手练习区

给你一囗甜甜゛ 提交于 2020-01-24 18:03:45
get_shell 学会第一步nc CGfbs IDA反汇编得到伪代码: int __cdecl main(int argc, const char **argv, const char **envp) { int v4; // [esp-82h] [ebp-82h] int v5; // [esp-7Eh] [ebp-7Eh] __int16 v6; // [esp-7Ah] [ebp-7Ah] int v7; // [esp-78h] [ebp-78h] unsigned int v8; // [esp-14h] [ebp-14h] ​ v8 = __readgsdword(0x14u); setbuf(stdin, 0); setbuf(stdout, 0); setbuf(stderr, 0); v4 = 0; v5 = 0; v6 = 0; memset(&v7, 0, 0x64u); puts("please tell me your name:"); read(0, &v4, 0xAu); puts("leave your message please:"); fgets((char *)&v7, 100, stdin); printf("hello %s", &v4); puts("your message is:"); printf((const char *)

Go语言学习-函数

*爱你&永不变心* 提交于 2020-01-24 16:12:57
函数 Go不是一门纯函数式的编程语言,但是函数在Go中是“第一公民”,表现在: 函数是一种类型,函数类型变量可以像其他类型变量一样使用,可以作为其他函数的参数或返回值,也可以直接调用执行。 函数支持多值返回。 支持闭包。 函数支持可变参数。 Go是通过编译成本地代码且基于“堆栈”式执行的,Go的错误处理和函数也有千丝万缕的联系。 函数定义 函数是Go程序源代码的基本构造单位,一个函数的定义包括如下几个部分: 1.函数声明关键字func 2.函数名 3.参数列表 4.返回列表 5.函数体。 函数名遵循标识符的命名规则,首字母的大小写决定该函数在其他包的可见性:大写时其他包可见,小写时只有相同的包可以访问; 函数的参数和返回值需要使用“()”包裹,如果只有一个返回值,而且使用的是非命名的参数,则返回参数的“()”可以省略。 函数体使用“{}”包裹,并且“{”必须位于函数返回值同行的行尾。 func funcName(param-list) (result-list) { function-body } 函数的特点 函数可以没有输入参数,也可以没有返回值(默认返回0)。 func A() { //do something //... } func A() int { //do something //... return 1 ) 多个相邻的相同类型的参数可以使用简写模式。 func

adworld-re新手练习区

懵懂的女人 提交于 2020-01-24 00:51:12
RE re1 下载得到exe文件,运行: 使用exeinfo分析,发现是32位无壳的exe, 拖入IDA,f5反编译: int __cdecl main(int argc, const char **argv, const char **envp) { int v3; // eax __int128 v5; // [esp+0h] [ebp-44h] __int64 v6; // [esp+10h] [ebp-34h] int v7; // [esp+18h] [ebp-2Ch] __int16 v8; // [esp+1Ch] [ebp-28h] char v9; // [esp+20h] [ebp-24h] ​ _mm_storeu_si128((__m128i *)&v5, _mm_loadu_si128((const __m128i *)&xmmword_413E34)); v7 = 0; v6 = qword_413E44; v8 = 0; printf(&byte_413E4C); printf(&byte_413E60); printf(&byte_413E80); scanf("%s", &v9); v3 = strcmp((const char *)&v5, &v9); if ( v3 ) v3 = -(v3 < 0) | 1; if ( v3 ) printf

c语言知识点1

放肆的年华 提交于 2020-01-23 21:24:26
运行 C 程序,main(int argc, char *argv[]) 函数传参,argc 为参数个数,argv 是字符串数组, 下标从 0 开始,第一个存放的是可执行程序的文件名字,然后依次存放传入的参数,举个例子 HelloWorld.c : # include <stdio.h> int main ( int argc , char * argv [ ] ) { /* 我的第一个 C 程序 */ printf ( "可执行程序 %s ,参数个数为[%d], 运行输出:[%s]\n" , argv [ 0 ] , argc , argv [ 1 ] ) ; return 0 ; } 编译 gcc HelloWorld.c,得到可执行程序 a.out,运行程序: ./a.out Hello,World! 可执行程序 ./a.out ,参数个数为[2], 运行输出:[Hello,World!] 注意点: 所有的 C 语言程序都需要包含 main() 函数。 代码从 main() 函数开始执行。 /* … / 用于注释说明。/ …*/多行注释 // 单行注释 printf() 用于格式化输出到屏幕。 printf() 函数在 “stdio.h” 头文件中声明。stdio.h 是一个头文件 (标准输入输出头文件) , #include 是一个预处理命令,用来引入头文件。因为

Spring复习 day(1)Bean的创建方式及生命周期

人走茶凉 提交于 2020-01-23 21:21:01
文章目录 一、 创建Bean的三种方式 1.1 使用默认构造函数创建 1.2 使用普通工厂中的方法创建对象(使用某个类中的方法创建对象,并存入spring容器) 1.3 使用静态工厂中的方法创建对象 二、spring的配置文件简单演示 2.1 applicationcontext的常用实现类 2.2 查看接口的实现类 2.3 ApplicationContext和BeanFactory的区别 2.4 什么时候使用延迟加载,什么时候使用立即加载? 2.5 bean的作用范围 三、bean对象的生命周期 3.1 单例对象 3.2 多例对象 一、 创建Bean的三种方式 1.1 使用默认构造函数创建 使用Bean标签,配以ID和class属性,且没有其他属性和标签时,采用的就默认的构造函数创建Bean对象,此时如果类中无默认构造函数,则对象无法创建。 bean.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema

2019-12-30

你说的曾经没有我的故事 提交于 2020-01-23 19:49:15
c语言错题 【题目16】数字字符0的ASCII值为48,若有以下程序 #include “stdio.h” main() { char a=‘1’,b=‘2’; printf("%c,",b++); printf("%d\n",b-a); } 程序运行后的输出结果是_。 答案:2,2 以下选项中,值为1的表达式是: 以下fun函数的功能是将形参s所指字符串内容颠倒过来 void fun( char *s ) { int i, j, k; for( i=0, j=strlen(s) __________ ; i<j; i++,j-- ) { k=s[i]; s[i]=s[j]; s[j]=k; } }在横线处应填入的内容是 一1 有以下程序 #include <stdio.h> fun( int a, int b ) { int static m=0, i=2; i=i+m+1; m=i+a+b; return m;} main(){ int k=4, m=1, p; p=fun( k, m); printf("%d,",p); p=fun( k, m); printf("%d\n",p); }程序运行后的输出结果是8,17 题目:求100之内的素数。 程序分析:质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。

Nginx Http框架的理解

≡放荡痞女 提交于 2020-01-23 14:28:49
HTTP框架是Nginx基础框架的一部分,Nginx的其它底层框架如master-worker进程模型、event模块、mail 模块等。 HTTP框架代码主要有2个模块组成:ngx_http_module和ngx_http_core_module; 我们编写的HTTP模块需要注册到HTTP框架上,才能融入HTTP请求的处理流程中。 当在nginx.conf中存在一个http{...}的配置时,即启用了HTTP框架代码,在nginx配置解析时,就已经为框架建立好了各种数据结构(尤其是HTTP模块的挂载); 当nginx收到请求时,请求完全按照HTTP框架建立好的这种逻辑进行处理。 一、HTTP模块开发基础 开发一个HTTP模块,需要下面几个数据结构: 1. HTTP模块配置结构 用于存储从配置文件读进来的相关指令参数; 配置模块的context有三种,分别是main、server和location,它们分别位于于http{...}、server{...}和location{...}上下文中。 其名称约定如下: ngx_http_<module name>_(main|srv|loc)_conf_t 2.HTTP 模块配置指令 模块的指令是定义在一个叫做 ngx_command_t 的静态数组中的; ngx_command_t数组以ngx_null_command为终结符。

编程小白之【C语言】- 第一个C程序代码分析!

╄→尐↘猪︶ㄣ 提交于 2020-01-23 01:57:26
一、代码分析 打开项目中的main.c文件(C程序的源文件拓展名为.c),可以发现它是第一个C程序中的唯一一个源文件,代码如下: 1.#include <stdio.h> ◐ #include 是C语言的预处理指令之一,所谓预处理,就是在编译之前做的处理,预处理指令一般以 # 开头 ◐ #include 指令后面会跟着一个文件名,预处理器发现 #include 指令后,就会根据文件名去查找文件,并把这个文件的内容包含到当前文件中。被包含文件中的文本将替换源文件中的 #include 指令,就像你把被包含文件中的全部内容拷贝到这个 #include 指令所在的位置一样 ◐ 如果被包含的文件拓展名为.h,我们称之为"头文件"(Header File),头文件可以用来声明函数("函数"就是面向对象中的"方法"),要想使用这些函数,就必须先用 #include 指令包含函数所在的头文件 ◐ #include 指令不仅仅限于.h头文件,可以包含任何编译器能识别的C/C++代码文件,包括.c,.hpp,.cpp等,甚至.txt,.abc等等都可以 ◐ 也就是说你完全可以将第3行到第9行的代码放到其他文件中,然后用 #include 指令包含进来,比如: 1> 将第3行到第9行的代码放到my.txt中 2> 在main.c源文件中包含my.txt文件 程序还是可以照常运行的,因为

大一寒假培训:结构体

痴心易碎 提交于 2020-01-22 23:24:54
一、结构体的定义与使用: 1.定义 在主函数内也可以在主函数外定义,下面是习惯用法: struct student //定义一个叫做“student”的结构体; { //以下是其中各种元素; char name [ 22 ] ; char xuehao ; int age ; double mark ; } p [ 1001 ] ; //给该结构体一个别名“p”,便于使用,且定义为一个结构体数组; 也可以这样: # include <bits/stdc++.h> using namespace std ; struct student { char name [ 22 ] ; char xuehao ; int age ; double mark ; } ; //此处不写; int main ( ) { struct student p [ 1001 ] ; //在主函数内进行声明,效果相同; return 0 ; } 2.使用 *先补充一点sort函数的使用基础: *再补充一点关于 正则表达式“%[^\n]” :可用于需要输入带有空格的字符型数组(如英文名),这个表达式用于输入语句,如: scanf ( "%[^\n]" , & stu [ i ] . name ) ; //意为输入直到键入回车(也就是\n)时停止输入; 还有一点很重要,不能在结构体声明中初始化结构体成员

R语言hist绘图函数

[亡魂溺海] 提交于 2020-01-22 20:53:16
hist 用于绘制直方图,下面介绍每个参数的作用; 1)x: 用于绘制直方图的数据,该参数的值为一个向量 代码示例: data <- c(rep(1, 10), rep(2, 5), rep(3, 6)) hist(data) 效果图如下: 从图中可以看出,横坐标为不同的区间,纵坐标为落入该区间内的频数; 2) break : 该参数的指定格式有很多种 第一种: 指定一个向量,给出不同的断点 代码示例: data <- c(rep(1, 10), rep(2, 5), rep(3, 6)) hist(data, breaks = c(0.5, 1.5, 2.5, 3.5)) 效果图如下: 第二种:指定分隔好的区间的个数,会根据区间个数自动去计算区间的大小 代码示例: 3)freq: 逻辑值,默认值为TRUE , y轴显示的是每个区间内的频数,FALSE, 代表显示的是频率(= 频数/ 总数) 代码示例: par(mfrow = c(1, 2)) data <- c(rep(1, 10), rep(2, 5), rep(3, 6)) hist(data, breaks = c(0.5, 1.5, 2.5, 3.5), freq = T, main = "freq = T") hist(data, breaks = c(0.5, 1.5, 2.5, 3.5), freq = F,