
C/C++
文章平均质量分 61
Anciety
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++函数返回引用的情况说明
引言(废话)即将考试C++,老师发了一些资料讲了一些比较琐碎的细节,其中有一个就是关于函数返回引用/非引用和在函数调用处使用该引用/费引用(即保存其值)的一些细节,发现自己对这个也不是很清楚,所以作一个记录和说明。返回引用/非引用函数返回非引用,一般情况下,都应该是返回对象的副本。函数返回引用,都应该是返回指向一个对象的引用(引用的实际实现其实就是指针,只不过该指针不允许被改变,且该指针每次使用原创 2016-06-26 11:44:04 · 1018 阅读 · 2 评论 -
逆向工程之表达式优化识别(3)-除法(上)
除法优化说明:除法相对其他几种运算的优化又要更难了,主要是其包含的数学知识(离散数学?) 由于我本人比较笨,也不喜欢深究数学,所以尽量跳过数学,以更直观的方式来解释(其实也就是我自己的理解方法了)0 取整问题取整分为向上取整和向下取整以及向0取整,我们在程序语言中的取整都是向0取整,但是有一些运算却是向下取整的,比如右移运算就是向下取整的,所以在负数的时候,为了保证向0取整,就会做一些调整。1 除原创 2016-07-05 01:32:38 · 1573 阅读 · 0 评论 -
android studio 使用cmake支持C++出现无法sync cmake error的问题
问题错误信息External Native Build IssuesBuild command failed.Error while executing '/root/Android/Sdk/cmake/3.6.3155560/bin/cmake' with arguments {-H/root/AndroidStudioProjects/AccessQRat/app -B/root/Andro原创 2016-09-30 23:55:22 · 33559 阅读 · 16 评论 -
C++函数对象学习笔记
函数对象C++似乎越来越希望和C撇清关系,在支持C的各种特性的前提下,又有一些独有的对C的语法实现。函数对象很大程度上和函数指针作用类似,C里有函数指针,相应C++有函数对象,当然,在C++情况下,函数对象肯定略显强大一些。有了函数对象,感觉就算是迈出了函数式编程的第一步了。用法只需要重载()就可以了,一个实例#include <iostream>using namespace std;clas原创 2016-10-16 11:09:33 · 392 阅读 · 0 评论 -
gcc 内联汇编用法介绍
前言大部分内容翻译提取自某国外HOW-TO文档,原地址: http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.htmlAT&T汇编语法gcc内联汇编语法采用AT&T格式,主要不同有五个方面 1. 源操作数和目标操作数的位置与intel格式不同 2. 寄存器命名,AT&T在寄存器前加百分号(%) 3. 字面值前加美元符号($原创 2016-08-13 16:52:29 · 5255 阅读 · 0 评论 -
逆向工程之表达式优化识别(5)-取模
取模优化取模运算是得到除法运算之后的余数的运算,这里简单提一下其相关的优化 示例:mov eax, VALand eax, 8000001Fjns LAB1dec eaxor eax, FFFFFFE0inc regLAB1:说明:这是一取模运算的示例,VAL是被除数,and的立即数是一个掩码,用来去掉高位保留地位,根据保留的低位数量,可以得到2^k次方的k,所以这里也就是一个x%(x原创 2016-07-05 11:07:42 · 872 阅读 · 0 评论 -
逆向工程之表达式优化识别(4)-除法(下)
除法优化继续说除法,之前说了除数为正数的除法,现在再来说除数为负的除法,其实基本思路都已经差不多了,区别在于关于取整时候的定理。 这里在理解的时候其实和之前类似,讨论a的大小即可,我这里只列出了向上取整的转换,因为默认是向下取整的,我们不需要向下取整的转换。向上取整也只需要讨论a<0的情况,因为只有这样才需要转换,所以只需要举例做简单思考,基本上和上一节除法的思考过程一样。1 除数为负2的幂说原创 2016-07-05 11:02:06 · 746 阅读 · 0 评论 -
逆向工程之表达式优化识别(2)-乘法
乘法优化说明:乘法和加减法相比,优化的可能性就高了很多了,主要是因为计算机对于乘法的运算速度不如加减法或者移位运算,所以如果可以转换成简单加减法和移位运算的乘法,编译器就可以选择不使用乘法,而用加减法+移位运算代替。 额外知识点:移位运算,左移和乘2的n次方结果一样,右移分为算术右移和逻辑右移,分别对应右移时左补位补的是符号位还是0。(算术右移补符号位,逻辑右移补0)可以简单理解为算术右移针对有原创 2016-07-04 22:44:22 · 784 阅读 · 0 评论 -
逆向工程之表达式优化识别(1)-加减法
前言看了《C++反汇编与逆向》那本书,对于加了优化的表达式虽然能够理解,但是由于不常见到又可能见到,见到的时候又经常想不起来,就干脆记下来,也算是督促自己对这一块理解透彻吧。加法优化优化是在代码编译的时候加入优化选项,可以减少占用空间或者减少运行时间消耗等方面进行优化,达到最佳效率。这里我们的优化单指运行时间的优化。1 常量传播说明:即在编译期间就可以得到结果的加法,可直接将变量替换为常量。 举例原创 2016-07-04 22:03:52 · 700 阅读 · 0 评论 -
gnu C语言__attribute__作用
关于attribute在看linux源码的时候我们可能会经常碰见相关的东西,比如在dl_open的函数里边:void* internal_function _dl_open (const char *file, int mode, const void *caller) { struct dl_open_args args; __rtld_lock_lock_recu原创 2016-07-03 16:02:14 · 1801 阅读 · 0 评论 -
全国大学生信息安全竞赛writeup--careful(pwn150)
描述其实没有描述。。就是一个文件,careful. 打开发现输入index和value,10个之后会打出来一个数组。思路先逆向,ida看看。 main函数很简单,return一个init_array。 到init_array里边就比较好玩了,不想看汇编直接f5,大致函数如下int initarray(){ int result; char s[20]; int v2;原创 2016-07-10 21:40:32 · 3119 阅读 · 0 评论 -
v8 老版本(4.8)编译大坑记录
前言由于需要研究一下老版本(4.8) v8的一些漏洞,需要编译一个老版本的v8(d8?),但是发现这条路真的大坑无数,所以稍微记一下,由于是凭记忆记的,可能不是很全。。获取代码首先获取代码已经是个大坑。depot_tools正常获取代码的方法是不行的,需要用到google的depot_tools。具体获取方案新老v8差距不大,获取最新的即可。具体可以按照v8 wiki里的方...原创 2018-05-28 12:19:56 · 2285 阅读 · 1 评论