自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

天马行空

运气就是机会恰巧碰到了你的努力!

  • 博客(53)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 如何学好C++?

刚开始学C++,陷入在语法的迷惑世界里,主要是不明白为什么这么设计。后来,C++出了很多新的标准,越来越读不懂新的标准,同样,不知道为什么会有这样的标准出现,目的是什么。之前听到一个消息,大概是,写effective系列的作者,表示不会再写新书了,因为他自认为无法理解新的标准了,也说明了新标准的复杂。和C++相比,C语言更容易一些,那是太简单了。只有98年和2011年的两个标准。随着学习和工作的深入,后来发现学习路线可能是不对的,前面一直在C++的表层游荡,没有深入到核心的部分,但什么是C++核心的部分

2021-11-21 20:29:46 1162

原创 使用windbg调试器定位程序的内存泄漏

windbg是windows平台下功能强大且轻量级的调试器,支持调试C/C++、C#等。之前在定位差压总控台的崩溃bug时,用到了windbg,功能比较强大,但是用起来比较费劲,需要记忆常用的命令,最重要的是界面比较丑。使用windbg最关键的是符号的配置,符号文件是链接程序过程中,生成的附件文件,其内容包含全局变量,局部变量,函数名称和入口地址,源代码行号等,符号对于调试应用程序非常重要。使用VS编译程序时,默认生成了以pdb结尾的符号文件。对于windows公共的系统程序(exe,动态库

2021-07-31 09:47:49 1782

原创 理解汇编语言

从汇编语言中,可以很好地理解CPU的运行,特别是对计算机整体架构的理解。冯诺依曼最早提出了以存储器为核心的现代电子计算机架构。从编程语言的层次上看,汇编语言属于低级语言。计算机只可以识别(译码)二进制,但是为什么呢?因为计算机的元器件只有高低电平之分,而没有高、中高、中、中低和低之分,如果有这些,那也许计算机可以识别5进制的数了,就像控制灯的开关,只有开和关两个状态,现在某些灯可以调整亮度,可以理解调整电流的大小?而对于计算机的元器件,例如晶体二极管,它只有两个状态。计算机识别0和1,其实是识别电.

2021-06-12 22:51:47 1432

原创 图灵机探索

图灵机是阿兰图灵在解决可计算数判定性问题时,提出的一种解决方法,图灵在论文中使用到了该计算机器。刨去图灵机的分类和形式化的定义,图灵机执行一系列的状态变化。把只包含0和1的字符串输入到图灵机中,图灵机依次根据字符串的每个字符,来决定下一个的状态,当然需要有一个初始状态,机器从初始状态开始运行,把初始状态称为状态0,图灵机依次处理每个输入的字符,例如遇到字符0,跳转到状态1,遇到字符1,跳转到状态2,而在状态1和状态2,同样对输入的字符执行规定的状态变化。可以想象,图灵机处在某个状态时,可..

2021-06-12 22:49:31 1170

原创 __RTC_CheckEsp实现原理

01371563 mov esi,esp01371565 push offset string "pause" (1377804h)0137156A call dword ptr [__imp__system (137A3F4h)]01371570 add esp,401371573 cmp esi,esp01371575 call @ILT+420(__RTC_CheckEsp) (13711A...

2021-04-11 13:45:43 1194

原创 【C++】根据类的成员变量地址获取对象地址

/* 根据一个成员变量的地址获取类对象的地址 */template<class class_type, class data_type>void *GetBaseFromDataMember(data_type class_type::*mem, void* pmem){ union temp{ int class_type::*mem; int offset; }; union PtrToInt { void *p.

2021-04-08 21:49:01 1906

翻译 QObject详细描述(来自assistant.exe)

详细描述QObject类是所有Qt对象的基类。QObject是Qt Object Model的核心。这个模型的核心特征是,为了无缝对象通信的,叫做signals和slots的一个强大的机制。你可以使用connect()连接一个信号和槽,使用disconnect()销毁该连接。为了避免永远不会结束的通知循环,你可以使用blockSignals()临时地组织信号。保护函数connectNotify()和disconnectNotify()让追踪连接成为可能。QObjects使用obje...

2020-11-23 22:08:57 305

原创 8086汇编:DOS系统功能调用表举例(INT 21h)三

OB 检验键盘状态输入:无输出:AL = 00(有输入) AL = 01(无输入); 0b.asm; masm 0b.asm; link 0b.obj; debug 0b.execode segment assume cs:codemain: mov ah, 0bh int 21h mov ax, 004ch int 21hcode endsend main调试结果,使用r运行,使用p步过。...

2020-10-23 14:00:06 657

原创 【8086汇编】输入任意数量的无符号整数,并使用冒泡排序进行排序后输出

不知道为啥,使用dosbox运行后,输出结果正确,但是调用4ch,退出程序时,没有退出。data segmentbuf db ? ; buf 用来保存输入的数字(字符串),无符号数,无法输入负数db ?db 10 dup(?)array dw 100 dup(?) ; array 用来保存输入的数字number dw 1 dup(?)

2020-10-17 11:42:11 1706 2

原创 【深入理解】C函数调用与汇编语言

函数在调用时,需要关注的有几个点,如何传递参数,如何返回到原来的地方继续执行。今天通过查看函数对应的汇编进行分析。函数和调用函数的代码如下:long long add(long long x, long long y) { long long sum = x + y; return sum;}…long long x = 3, y = 7;long long a = add(x, y);函数add有两个long long的参数x和y,在函数中,有一个局部变量sum,赋值

2020-10-14 13:16:18 511

原创 程序运行时,为什么栈的访问比堆的访问更快?

我不是在问,程序转换为汇编代码后,访问堆的汇编代码,多了一步,就是访问栈中的指针(局部的指针),再去访问堆。从汇编代码层面,直接访问栈和堆,为什么access stack faster than heap?是CPU缓存机制吗,还是其他?...

2020-09-27 21:31:41 363

原创 C++类单一继承时(带有虚函数)在内存模型上的探索

注:demo程序只是为了探索对象模型。在《深度探索C++模型》一书中,作者在描述编译器对vptr在class object的布局做了描述,一般放在data member的前面,也就是class object的最前面,也可以放在data member的后面。今天使用g++编译器和gdb调试器,来试验vptr在base class和derived class中的布局。单个类中包含虚函数时的虚指针布局假设有一个base class B,代码如下:class B {public:

2020-09-20 14:16:25 116

原创 WAF 绕过方法

命令注入通配符?,*在bash shell中,问号?表示通配符,可以替换任意的单个字符(非空),*表示通配符,可以匹配任意长度(包括空)。例如下面的命令与/usr/sbin/cat /etc/passwd是等价的。来自exploit-db上的一篇文章/usr/s?in/?at /et?/pass?dSQL注入注释/**/在SQL查询语句中加入注释,例如select/**/from,当WAF不摘除注释而去匹配正则表达式时,可能会匹配不上,从而绕过。...

2020-08-12 21:13:57 1803

原创 C语言关键字static

staticC语言中的关键字static有3个用法,它表示静态变量或函数,被声明为静态的变量,存在在静态/全局变量区。它的作用主要是:通过static限定外部对象,可以达到隐藏外部对象的目的。1,函数中的静态局部变量。函数中的静态局部变量在函数调用过程中,它一直存在,无论函数是否被调用,它只可以被赋值一次,再次调用该函数时,里面的局部变量不会进行初始化。2,文件(模块)中的全局静态变量。文件(模块)中的全局静态变量只能被该文件中的其他函数使用,无法被其他文件(模块)中的函数使用。

2020-08-12 20:30:36 192

原创 8086汇编:DOS系统功能调用表举例(INT 21h)二

续上一篇8086汇编:DOS系统功能调用表举例(INT 21h)09 向标准输出写字符串说明:DS:DX,保存字符串地址,字符串以"$"结尾; write string to standard output; 09.asm; masm.exe 09.asm; link.exe 09.obj; 09.exedata segments db 'hello, world!', '$'data endscode segment assume ds:data, cs:c

2020-06-17 20:52:23 1184

原创 8086汇编:DOS系统功能调用表举例(INT 21h)

参考链接:DOS Interrupts开发环境:dosbox,windows01 从标准输入(STDIN)读取字符说明:返回值 AL = 读取的字符; read char from stdin; 01.asm; masm.exe 01.asm; link.exe 01.obj; 01.execode segment assume cs:codemain: mov ah, 01h ; read char from stdin

2020-06-14 20:18:54 2782

原创 ddos类型及攻击测试

ddos是分布式拒绝服务攻击,对于一个提供服务的服务器,短时间内恶意访问次数过多,频率过高时,正常的用户无法访问,正常使用业务,造成拒绝服务。ddos工具很多,一方面是ddos攻击的原理,需要熟悉协议原理(包括网络层,传输层,应用层)。hping3是linux下的一个ddos工具,记录下它的使用。假设服务器IP是192.168.1.1,服务端口是80。TCP SYN Floodhping3 --flood --syn -p 80 192.168.1.1TCP ACK Floodh

2020-06-14 19:52:10 1344

原创 用了这么久的Linux系统,谈谈感受

用了这么久的Linux系统,谈谈感受把笔记本电脑换成linux操作系统,也有一段时间了。总体的感受与windows相比,还是不太方便,因为大部分人使用的是windows,涉及需要共同使用的软件时,很不方便。从接触电脑开始,就是windows,用了好几年的windows,说放弃就放弃了,这是不现实的。就像身上的赘肉跟了自己多年,突然你说要减肥,赘肉舍不得,你也舍不得呀。在大学的一...

2020-04-19 18:41:45 1457

原创 让我来问问你,Python不能做什么?

让我来问问你,Python不能做什么?如果有人问你,Python能用来做什么,如果你用过Python,你肯定可以向他滔滔不绝地介绍Python的各种强大功能。但是,假如问你,Python不能做什么?你可能要思考一下了。2020年1月份,TIOBE指数发布编程语言排行榜,Python语言排在第3名,TIOBE指数是一个编程社区指数,该指数根据编程语言在各大搜索引擎的搜索次数等指标...

2020-03-29 13:31:17 900

原创 C语言参数传递所使用的寄存器

探索下C语言的函数是如何传递参数的,寄存器?栈?,何时使用寄存器,使用哪些寄存器,什么时候使用栈来传递参数。这是容易疑惑的地方。用gcc编译C程序,看看C语言是如何传递参数的。同时用到了edb调试器。使用的操作系统是linux 64位。思路是编写一个简单的函数,具有个数不同的参数。函数没有具体的意义,纯粹是为了探索C语言的函数是如何传递参数的。函数有1个参数// a.c// gc...

2020-02-09 13:12:53 7692

原创 HTTP响应码

参考:rfc2616,https://developer.mozilla.org/zh-CN/docs/Web/HTTP/StatusHTTP响应码分为5种,1xx,2xx,3xx,4xx,5xx,来看一些这么多的响应码的含义。目前来看,没有一个web服务器实现了所有的响应码,因此,实践中见不到所有的响应码是正常的。信息响应 1xx100 Continue客户端应该继续请求。100...

2020-01-18 09:36:46 226

原创 同IP,不同端口,登录一个页面时,旧版本firefox发送另一个端口的cookie

遇到的一个问题,一个服务器开了两个不同的端口,相当于两个网站,假设A和B。例如127.0.0.1:81和127.0.0.1:80,当我登录A后,浏览器缓存了A的cookie等信息。然后我再去登录B,这时候发现登录不了,抓包发现,在登录B的过程中,提交的cookie信息中,包含了网站A的cookie信息,网站B无法识别,因此返回了302重定向,重定向到了登录页面。我的firefox比较老,是...

2019-09-16 19:57:35 227

原创 wampserver安装后,远程访问出现403

wampserver集成了apache2、mysql和PHP,但是默认安装后,如果远程访问,出现403错误,没有权限访问。其实是默认配置的问题。可以遍历httpd.conf,将其中的Require local修改为Require all granted。如果配置了虚拟主机,需要修改/extra/vhosts.conf文件,将其中的Require local修改为Require all gr...

2019-09-11 21:58:35 345

原创 python xlrd,读取excel文件

xlrd就是excel read的意思,用来读取excel表格。在做自动化测试的时候用到了这个库,看一下常用的函数。import xlrdfilename = "abc.xls"book = xlrd.open_workbook(filename) # 打开一个工作薄,不需要手动进行关闭sheet = book.sheet_by_index(0) # 获取一个工作表,以i...

2019-09-11 21:52:58 2809

原创 PHP配置文件php.ini的一些事儿

工作时候遇到的问题,在用dvwa靶机环境时,发现上传大文件会失败,需要修改PHP的配置文件php.ini,包括多个字段都要进行修改。所以就记录下php.ini的一些配置。更详细的内容可以参考PHP官网。下面的PHP7.3中cli目录下的配置文件,做些注释。[PHP];;;;;;;;;;;;;;;;;;;; About php.ini ;;;;;;;;;;;;;;;;;;;;; ...

2019-09-11 21:35:06 2043

原创 tftp协议-没有认证的简单文件传输协议

笔试时,有一道题目,tftp的端口号是多少。这个以前没有接触过,就随便写了个端口。tftp全称是Trivial File Transfer Protocol,简单文件传输协议,比ftp还要简单,没有认证机制,它使用UDP协议,端口号是69。我用IPOP开启了tftp服务器,使用wireshark抓包时,发现只有客户端发给服务器的tftp包,比如读请求,然后收到块后的确认,却没有收到服务器发来的...

2019-07-16 23:11:05 904

原创 mysql union 联合语句错误

在测试SQL注入的时候,mysql提示错误,因为联合语句查询的结果的列数不同,导致了这个错误。例如下面的SQL查询语句:select * from user where user_id='1' union select version();表user有6列,而union后面的语句:select version()查询结果只有一列,因此会出现错误,把后面的语句查询结果变成6列就可以了。s...

2019-07-09 23:12:11 1442

原创 本地端口转发-有中间商但是不赚差价

本地端口转发想象这样一个场景,在局域网里面,有一个主机A,由于限制,主机A不能访问外网,现在要使其能够访问外网的一台主机C。而局域网中有一台边界主机B,B既可以与主机A通信,也可以与外网通信,这时我们可以使用主机B做跳板,使主机A能够访问外网的主机C。举个形象的例子,你的左边坐了一个帅哥(A),你的右边坐了一个美女(C),然后左边的帅哥(A)写了一封情书(请求数据包),请你帮忙传递,你用左...

2019-07-06 17:32:27 1359

原创 寻找问题的本质和围绕问题的本质

掌握不了问题的本质,容易出现南辕北辙的现象,我相信,世界上百分之九十九的事情都是有其规律可循的,如果没有探究到问题的本质,就可能会围绕着问题转圈圈,而没有实质性的进展。其实目的地就在你身边,转个身或扭个头就发现了,而往往我们就错过了这些,一直在目的地的周围徘徊。曾经有过这样的感受,在学习一门新语言的过程中,会去上网去查找相关的知识,这一找不要紧,一下又钻进其他知识中去了,而忘记了当初的目的地在...

2019-06-04 21:43:57 738

原创 [逆向,栈溢出]《0day安全:软件漏洞分析技术》2.3.2控制程序的执行流程 复现

记录一下。程序使用dev-cpp编译运行,注意要修改为32位debug,安装的ollydbg只能调试32位的应用程序。C源代码,来自书上。多了两个头文件string.h和stdlib.h。#include <stdio.h>#include <string.h>#include <stdlib.h>#define PASSWORD "1234...

2019-05-02 11:20:08 353

原创 [8086汇编]读取无符号整数并打印该整数

使用0ah中断调用号,读取字符串,然后将字符串转换成整数,打印该整数。; read u int number; readuint.asm; masm.exe readuint.asm; link.exe readuint.obj; readuint.exedata segmentbuf db 5db ?db 5 dup(?)number dw 0data endsco...

2019-04-26 13:20:17 1208

原创 [8086汇编]打印无符号整数函数

8080汇编中关于打印只有打印字符和字符串,没有打印整数的,因此写了一个打印整数的函数print_int,参数存放在寄存器ax中。在dosbox中模拟通过。; test.asm, run in dosbox; assembly: masm test.asm; link : link test.obj; run : test.exedata segmentdata en...

2019-04-16 16:46:48 1679 3

原创 [8086汇编]int 21h dos函数码

在8086汇编中,会用到很多的中断调用,21h中断是最常用的,这里总结下21h的函数功能码,以及一些小的example code。下图是int 21h DOS函数码。包括控制台读写,获取系统信息,文件目录管理等。(int 21h DOS功能码)01 Read character from STDINinput: AH = 01output: AL = read cha...

2019-04-16 15:46:49 2469

原创 mips汇编字符串比较strcmp

compare是函数,参数保存在寄存器$a0和$a1,分别表示两个字符串的首地址,字符串以零作为结尾。.data str1: .asciiz "abcd" str2: .asciiz "abc".text .globl mainmain: la $a0, str1 la $a1, str2 jal compare move $a0, $v0 li $v0, 1 sy...

2019-04-12 18:50:27 1390

原创 windows 64使用nasm

在windows中使用nasm与在Linux中有所不同,主要在于函数的调用方式,nasm在linux中使用系统调用或C库函数时,参数使用寄存器的顺序是rdi,rsi,rdx,rcx,r8,r9,而在windows下,函数参数保存到rcx,rdx,r8,r9。windows和Linux的系统调用有很多不同,windows的系统调用可以理解为Windows提供给程序员的API,也可以称为系统调用。...

2019-04-12 18:42:27 7517 1

原创 [0xb] nasm汇编 [结构体]

在C语言中使用struct声明结构体,而在nasm汇编中,也可以使用结构体,通过使用伪指令来声明结构体。下面的struc代码展示了如何在nasm汇编中使用结构体。; struc.asm ubuntu 64; compile: nasm -f elf64 -o struc.o struc.asm; link: gcc -o struc struc.o; run: ./struc...

2019-03-14 16:40:13 876

原创 [0xa] nasm汇编 [递归:阶乘]

使用nasm进行递归的编写,汇编代码的递归编写和C语言非常相似。; fac.asm; ubuntu 64; compile: nasm -f elf64 -o fac.o fac.asm; link: gcc -o fac fac.o; run: ./facextern printfsection .data num: dq 5 fmt: db 'fab(%...

2019-03-13 15:12:36 356

原创 [0x09] nasm汇编 [循环:冒泡排序]

上节介绍了简单的加减乘除运算,在除法div运算时,被除数存放在寄存器rdx:rax中,执行除法后,商存放在rax中,余数存放在rdx中;乘法mul运算中,一个乘数存放在rax中,乘法运算的结果存放在rdx:rax中。这节介绍循环,以一个冒泡排序的例子:b_sort.asm; b_sort.asm; bubble sort; nasm -f elf64 -o b_sort.o b_so...

2019-03-02 16:21:32 863 3

原创 [0x08] nasm汇编 [运算:加减乘除]

上节介绍了使用栈调用函数,call指令调用的时候,将当前的IP值压入栈。函数返回的时候,将栈顶的元素pop到IP中,由于默认使用_cdecl调用,因此需要调用者平衡栈。这节介绍基本的运算:加减乘除。nasm使用Intel汇编指令,可以通过查阅Intel官方文档,这里是Intel指令官方文档:https://www.intel.cn/content/dam/www/public/us/en/...

2019-02-27 14:05:24 2919

原创 [0x07] nasm汇编 [求和]

问题描述:输入两个整数,使用函数求出两个整数的和,并打印。这节介绍函数的使用,并对两个整数进行求和。这个过程中用到了C的库函数printf和scanf,因此需要链接C的动态链接库。思路:使用scanf输入两个整数,然后压入栈中,调用add函数。话不多说,代码如下add.asm:; add.asm; nasm -f elf64 -o add.o add.asm; gcc -o ...

2019-02-26 17:53:06 905

列出磁盘上的所有文件

扫描硬盘,将所有的文件名存放到当前目录下的test.txt文件中。

2018-09-11

gcc官方文档

gcc官网使用文档,gcc官网使用文档,gcc官网使用文档。

2017-11-30

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

TA关注的人

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