scylla 修补 这里以x64dbg的scylla插件脱upx的壳为例
定位oep 运行->步过->步过....->大跳转
scylla 修补脱壳程序 scyalldump出程序
Fix dump
此时同目录出现的以_SYC结尾的程序就是修补后的程序
修补成功
// AC one more times #include<iostream> #include<string> #include<map> #include<queue> #include<random> #include<time.h> #include<algorithm> #include<functional> #include<numeric> using namespace std; bool cmp1(int i, int j) { return (i > j); }//nth_element int main() { srand(time(0)); vector<int> a, b; for (int i = 1; i <= 10; i++) { int t = rand() % 10 + 1; a.push_back(t); b.push_back(t); } //遍历方法 cout << 遍历方法 << endl; for (vector<int>::iterator iter = a.
linux网络编程示例 简单TCP、UDP编程示例。
TCP TCP客户端与服务器通信模型 服务器代码 #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <errno.h> #include <stdio.h> #include <unistd.h> #include <string.h> int main(void) { const char ip[] = 127.0.0.1; const int port = 9006; //创建socket,使用IP协议(PF_INET)+TCP协议(SOCK_STREAM) int fd_listen = socket(PF_INET, SOCK_STREAM, 0); //绑定固定ip:port地址 in_addr_t ip_num = inet_addr(ip); sockaddr_in addr_server = {AF_INET, port, ip_num}; bind(fd_listen, (sockaddr *)&addr_server, sizeof(addr_server)); //监听socket listen(fd_listen, 10); //接受客户端连接,并返回连接socket sockaddr_in addr_client; socklen_t len_client_addr = sizeof(addr_client); int fd_conn = accept(fd_listen, (sockaddr *)&addr_client, &len_client_addr); //接收客户端数据 printf(start receiving data.
安装centos7【通过vm来安装运行centos7】 一、准备工作 1、centos7 的安装镜像下载链接:http://isoredirect.centos.org/centos/7/isos/x86_64/ 2、vmware-workstation的安装包下载链接:https://softwareupdate.vmware.com/cds/vmw-desktop/ws/ 本文选择的centos7 版本是:CentOS-7-x86_64-DVD-2009.iso 本文选择的VMware-workstation版本是:14.1.4 3、安装VMware-workstation,更换一下安装目录 4、用户体验设置,不勾选 5、点击安装,之后不要着急点完成,先点击证书 安装之后,激活秘钥:
激活码1:CG54H-D8D0H-H8DHY-C6X7X-N2KG6 激活码2:ZC3WK-AFXEK-488JP-A7MQX-XL8YF 激活码3:AC5XK-0ZD4H-088HP-9NQZV-ZG2R4 激活码4:ZC5XK-A6E0M-080XQ-04ZZG-YF08D 激活码5:ZY5H0-D3Y8K-M89EZ-AYPEG-MYUA8
二、安装centos7 1、建新的虚拟机-自定义(高级): 2、虚拟机硬件兼容性,选择默认的即可 3、安装客户机的操作系统,选择稍后安装操作系统 安装客户机操作系统,选择Linux,版本是咱centos7安装包对应的版本 给你的虚拟机起个名字和给你的虚拟机找个位置存放 4、处理器配置,配置器数量默认是1,选择默认的即可 5、虚拟机内存: 给虚拟机多少内存呢?根据你电脑的内存多大决定,若是电脑是8G的内存,建议就选2G,更大的内存的话,可以选择再大些啦~ 至此,往后,都是一路默认
6、网络类型,使用网络地址转换(NAT)(E),选择默认的即可 7、I/O控制类型,选择默认的即可 8、磁盘类型,选择默认即可 9、选择磁盘,使用哪个磁盘,选择默认即可 10、磁盘容量,磁盘大小,选择默认的20G,将虚拟磁盘拆分成多个文件,选择默认即可 11、指定磁盘文件,何处存储磁盘文件,选择默认的即可 完成之前,自定义硬件
12、完成之前,自定义硬件: 13、点击新CD/DVD选择自己下载的centos7镜像文件;可以将没有必要的打印机给移除,增加开机速度; 14、接下来,选择开启虚拟机 15、提示下载安装VM-Tools,可以下载和安装一下,安装工具vm-tools之后,退出去,然后重新点击开启虚拟机 16、安装centos7: 1)点击 Install Centos7 2)语言选择中文 3) 选择软件安装: ■ 最小安装,开发者工具
4) 安装位置: ■ 其他存储选项,我要配置分区: 选好后点击完成 ■ 手动分区,选择标准分区,添加新挂载点 挂载点:/boot 200M 然后,又依次,添加挂载点:swap(容量是2G) 和 /(容量是10G) ■ 创建完挂载点后点击完成;并接受更改 5) 关闭kdump: 6) 配置网络与主机名: 配置之前,先在自己电脑的docs窗口(cmd 下),查看自己电脑的ip
namespace(命名空间):其实就是声明了空间,主要作用是防止在引入.php文件的时候防止.php内部的类/函数/常量或第三方类/函数/常量之间的名字冲突,如果引用了重复类名会导致报错。如下图: a.php
<?php //namespace think; class a { public function a() { echo 'a'; } } b.php
<?php //namespace think; //use think\a; require_once './22/a.php'; require_once 'a.php'; //use think2\a as a2; class b { public function b2(){ $a = new a; $a->a2(); echo 'b'; } } $c = new b(); $c->b2(); 如上代码,require_once了两个内容一样的php文件,里面有相同的类a,当两个类重复的时候PHP会报错。 use:use关键字与文件加载没有一点关系,use关键字的作用就是声明要使用的类所处那个命名空间之下(而且方便了对象的实例化)。注:在使用traits的时候也会只用use来继承traits 例如下图,new \think\a实例化a的时候需要加上命名空间think,如果不加的话需要将b.php第三行的注释解开。而且如果两个a.php中有一个使用了命名空间的话require_once 同样拥有类名的文件不会报错。 require:作用是要引进所需要的文件,文件的位置与命名空间无关,要使用绝对位置或者相对位置。 总结:其实说白了就是require引入了文件(require是根本),然后namespace是为了防止类名重复而导致php报错,use这是为了让对象声明更加的简洁代码更加优雅而存在的属于是锦上添花的类型。 至于Thinkphp5.0中类似下图的做法看似没有require到文件,实际上是框架已经require了文件的。 (17条消息) 详解spl_autoload_register()函数_pengmingdong的博客-CSDN博客_spl_autoload_register
作为一款免费开源的 C/C++ IDE,内嵌 GCC 编译器(GCC 编译器的 Windows 移植版),且是 NOI、NOIP 等比赛的指定工具,Dev C++ 的优点是体积小(只有几十兆)、安装卸载方便、学习成本低,缺点是调试功能弱。这次我们来下载DEVC++的5.11版本。 很简单,所以写的比较详细。
目录一、进入官网二、开始安装
一、进入官网 可以直接在百度上搜索【DEVC++】,这里直接附上链接: https://sourceforge.net/projects/orwelldevcpp/
二、开始安装 1、这里先选择【English】,后续可以在安装好后修改设置变成中文版
2、选择【I Agree】 3、这里选择【full】 4、选择要下载的位置 5、等待一段时间后,就安装完成了 6、这里选择【简体中文】就可以了,后续只要一直选择【next】就完成了 这样你的DEVC++就安装好了!!!
目录一、官网下载安装包二、开始安装三、检查是否安装成功
一、官网下载安装包 官网链接:
https://dev.mysql.com/downloads/
1、进入官网,点击下载
2、选择适合自己的下载方式,点击【download】 3、这里直接选择【NO,thanks】,就可以了 二、开始安装 1、打开下载好的安装包
3、第一次下载可能需要等待一段时间 3、这里我是选择了【Server only】 等待一段时间 4、如果出现了这个页面。选择同意后选择安装 5、一段时间后的页面没有意外都选择【Execute】 6、这里注意要勾选 7、输入一个自己记得住的密码,后续页面基本都是【next】,附上页面 三、检查是否安装成功 1、在最近添加里找到【MYSQL 8.0 Commard Line Client - Unicode】,点击打开
2、输入刚才那个你记得住的密码
3、如果出现以上界面,恭喜你安装成功!!
方法的定义
Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法:
方法包含一个方法头和一个方法体,下面是一个方法的所有部分:
修饰符:修饰符,这是可选的,告诉编译器如何调用该方法,定义了该方法的访问类型
返回值类型:方法可能会返回值,returnValue Type是方法返回值的数据类型,有些方法执行所需的操作,但没有返回值,在这种情况下,returnValueType是关键字void
方法名:是方法的实际名称,方法名和参数表共同构成方法签名
参数类型:参数像是一个占位符,当方法被调用时,传递值给参数,这个值被称为实参或变量,参数列表是指方法的参数类型,顺序和参数的个数,参数是可选的,方法可以不包含任何参数
形式参数:在方法被调用时用于接收外界输入的数据
实参:调用方法时实际传给方法的数据
方法体:方法体包含具体的语句,定义该方法的功能
修饰符 返回值类型 方法名(参数类型 参数名){ ... 方法体 ... return 返回值;//除了返回值的意思还有终止方法的意思 } 方法调用
调用方法:对象名.方法名(实参列表)
Java支持两种调用方法的方式,根据方法是否返回值来选择
当方法返回一个值的时候,方法调用通常被当做一个值.例如:
int larger =max(30,40); 如果方法返回值是void,方法调用一定是一条语句.
System.out.println(Hello,kuangshen!) 课后拓展了解:值传递和引用传递
课题 程序界面由3个文本编辑框和1个文本标签组成。 要求文本标签实时显示3个文本编辑框所输入的数字之和。 文本编辑框输入的不是合法数字时,将其值视为0。 3个文本编辑框的初值分别为1,2,3。 创建工程 打开 Android Studio,File / New / Project... 在 New Project 向导的第1页,选择 Empty Compose Activity 在向导的第2页 Name 填上 Compose Example 在向导的第4页点击 Finish 按钮创建工程
ViewModel 在 com.example.composeexample 包中添加 NumbersViewModel 类
class NumbersViewModel : ViewModel() { val number1 = MutableStateFlow(1) val number2 = MutableStateFlow(2) val number3 = MutableStateFlow(3) val result = combine(number1, number2, number3) { n1, n2, n3 -> ((n1.toIntOrNull() ?: 0) + (n2.toIntOrNull() ?: 0) + (n3.
web 存储方式:Cookies,Session, Web SQL; Web Storage(LocalStorage ,SessionStorage),IndexedDB,Application web 存储方式汇总:
旧的方式:
Cookies;
Session;
Web SQL;
新的方式 HTML5 :
Web Storage(LocalStorage ,SessionStorage);
IndexedDB;
Application Cache;
Cache Storage ?
1
1
1
Cookies
https://www.w3.org/TR/csp-cookies/
Content Security Policy: Cookie Controls W3C First Public Working Draft, 15 December 2015 https://html.spec.whatwg.org/multipage/webstorage.html#storage
demo:
document.cookie = key=value; document.cookie = key=value; domain=example.com; document.cookie = key=value; secure; document.