心 空

  • Tools
C
C

Linux 下 Shellcode 编写入门

##0x00 由于某些原因,突然对shellcode有了些兴趣。从Google翻到了这篇文章Shellcoding for Linux and Windows Tutorial,给予了我很大的帮助。 在这里我就简单地介绍下简单shellcode的编写。 ##0x01 第一步大概就是是用汇编写源程序。当然,使用C也可以,但是会更复杂些。 这里就大致演示下Hello World的shellcode的编写。 x86环境下。 global _start _start: jmp MESSAGE CALLBACK: xor e…

21 4 月, 2017 0条评论 7504点热度 2人点赞 Ricky 阅读全文
C

VScode Windows下配置Visual Studio编译C++

0x00 缘由 因为某些原因,需要使用VScode来编译C++文件。在各种Google之后,终于找到了配置的方法。 0x01 需要的组件 首先,我们需要VScode本体,和Windows下的C/C++ Build Tools,如果机子上已经安装了Visual Studio的话,可以略过这一步。 若未安装Visual Studio的话,可以下载Visual C++ 2015 Build Tools VScode插件需要安装了cpptools,以及powershell(cmd会导致输出乱码)。 0x02 配置tasks…

16 3 月, 2017 0条评论 5768点热度 6人点赞 Ricky 阅读全文
C

C 二维数组的传参方法

对于普通的一维数组,我们只需要这样声明一个函数即可: void fun1(int *ar); void fun2(int ar[]); 但是,对于二维数组,函数声明就会比较复杂,常见的有: void fun3(int ar[][10]); //这里的10指二维数组第二维的大小,必填,且必须为常量 void fun4(int *ar[10]); 这两种声明方法最为普遍,而且,使用起来也方便。可以直接在函数体内使用数组。但是,有个问题就是,以上两种方法必须要提前确定传入的二维数组第二维的大小。然而在很多情况,我们是不能…

15 9 月, 2015 0条评论 1920点热度 0人点赞 Ricky 阅读全文
C

C 可变长参数va_arg的一些总结和陷阱

今天尝试着使用va_arg来写一个my_printf()函数,目的就是做到像printf()那样可以格式化输出。首先,想到的就是通过可变长参数来传递参数。之所以这样做是因为我们不能确定每次调用my_printf()的时候,会使用几个实参。stdarg.h就是这个可变长参数的头文件,里面定义了以下几个函数: va_start() //使va_list指向起始的参数 va_list() //用来保存宏va_arg与宏va_end所需信息 va_arg() //检索参数 va_end() //释放va_list va_c…

14 9 月, 2015 0条评论 2637点热度 1人点赞 Ricky 阅读全文
C

C float在内存中的储存方法

众所周知,int类型的数据在内存中以32位储存,且第一位为符号位,实际储存为31位二进制,非常的好算。但是,对于float类型来说,因为有小数部分,所以和int类型的储存方法是有点区别的。一个浮点数由两部分组成:底数m 和 指数e(均为二进制表示)。 首先,float储存时,第一位依旧为符号位。 但是,从第二位到第九位为指数位 以8-bit形式储存,储存范围为0~255。但是,因为指数有负数,所以规定最终取值为**原数值-127**。即,`129-127=2` ,二次幂。 然后,剩下的23-bit为底数部分的值。其…

14 9 月, 2015 0条评论 2092点热度 0人点赞 Ricky 阅读全文
C

C 位数组的建立方法与运用

今天用到了位数组,从网上找到了一个灰常6的方法。通过宏定义,就可以快速的建立位数组并且创建常用函数: #include //引入CHAR_BIT #define BITMASK(b) (1

10 9 月, 2015 0条评论 1844点热度 0人点赞 Ricky 阅读全文
C

C 关于移位运算的一点总结

C语言中有两个很牛x的运算符,就是移位运算符。这就使得我们可以对一个数的某个位进行独立的操作。例如,一个unsigned int类型就可以变成32个bool型来使用。当然,没什么人这么疯狂罢了。。纯属闲的蛋疼233那么,移位运算符我们该怎么使用呢?首先,``就是向右移动了。当然!移位运算符没有这么简单。其中隐藏了几个陷阱。比如,因为移位而空出来的位是用什么来填充的呢?是0呢?还是1?首先,对于左移(

8 9 月, 2015 0条评论 1851点热度 0人点赞 Ricky 阅读全文
C

Linux下的C语言pow()函数引出的问题

今天才Linux下用math.h库的pow()函数,gcc编译的时候报错返回:对‘pow’未定义的引用查了下资料,需要在gcc编译的时候加上-lm参数才能正常编译。这是为什么呢?再查了下资料: 使用math.h中声明的库函数还有一点特殊之处,gcc命令行必须加-lm选项,因为数学函数位于libm.so库文件中(这些库文件通常位于/lib目录下),-lm选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找。本书用到的大部分库函数(例如printf)位于libc.so库文件中,使用libc.so中的库函数在编译时…

8 9 月, 2015 0条评论 2540点热度 1人点赞 Ricky 阅读全文
C

C语言 while((ch=getchar())!=EOF) 的问题

以前,经常使用while((ch=getchar()!=EOF)来作为程序读取输入的结束。但是,今天发现,这个EOF的类型是整形。然而,我们经常是将ch定义为字符型:char ch;这样就造成了一个问题:getchar()读取输入的EOF的时候,读取的是整形数。然而,这个数字比char类型(-128~127)要大.所以,getchar()在赋值给ch的时候,会造成该数值被截短的现象。然后ch经过提升为整形之后再与EOF作比较的时候是不会相等的。这就有可能使得程序在输入EOF的时候并不会停止。或者是在键入\377的时…

7 9 月, 2015 0条评论 3372点热度 3人点赞 Ricky 阅读全文
C

C 语言 批量Ping工具(改)

经过了一晚上的努力,终于把这个工具做的能看了。。早上的版本只是基本功能罢了。这次的改进版提供了手动输入和从文件导入两种输入方式。能够自定义Ping的次数。同时,将各个功能模块化,代码量也变大了好多。。总之,这个Ping工具就这样了。 而且,在写这个小工具的时候,发现了自己在编程方面的很大不足,同时也发现了几个编程的小陷阱。1)scanf函数的换行符问题。在scanf()读取完之后,会留下一个换行符\n。这就会导致一个问题,我成为“换行符污染”。简而言之,就是会多出换行符导致下一次读取输入的时候因多余的换行符而提前终…

1 9 月, 2015 0条评论 1929点热度 0人点赞 Ricky 阅读全文
12

Ricky

这个人很懒,什么都没留下

最近评论
rantrism 发布于 3 年前(12月08日) 您好~我是腾讯云开发者社区运营,关注了您分享的技术文章,觉得内容很棒,我们诚挚邀请您加入腾讯云自媒体...
Bahai 发布于 4 年前(09月10日) :smile: 使用。正想破头脑。
零奇 发布于 4 年前(01月23日) 你好,我使用action设定它每隔15分钟执行一次,但是它实际上是隔一个小时左右才执行一次,执行并不...
woodenrobot 发布于 5 年前(01月16日) 你好按照这个设置 celery 4.4 + redis 版本,队列中的任务会被一次性全部拿完,请问可...
Silver 发布于 7 年前(05月01日) 你看,所有GUI的机制终会导向某种Windows的设计思路(逃
最新 热点 随机
最新 热点 随机
如何自建Coder平台,并且添加VSCode Web Docker容器如何通过DHCP,实现自动获取宿主机局域网IP WireGuard的简单使用,以及自动Mesh相关想法 QNAP NAS:安装Emby,使用MPD配合upmpdcli实现本机DLNA播放 Raspberry Pi 4:将树莓派作为网桥使用 Raspberry Pi 4:使用bluez和bluealsa,将树莓派改造为蓝牙音箱
Less-9~10 Raspberry(树莓派) 2 B 之搭建Minecraft服务器 WireGuard的简单使用,以及自动Mesh相关想法 Less-3 PHP Hash 漏洞之 Magic Hash PyQt开发(一):环境配置(PyCharm)

COPYRIGHT © 2025 心 空. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang