C/C++
雨声不在
有问题请在相关博客下评论,或者给我邮件 hello@yeshen.org。:)
展开
-
使用libcurl请求https的get/post
最近有个需求,需要用c++请求下我自己的服务器,周末看了一下怎么发起http请求。原创 2023-09-03 20:29:07 · 1275 阅读 · 0 评论 -
ubuntu18安装cmake27的方法
背景是ubuntu18默认的cmake是3.103.10 没有所以我想升级到3.27版本。原创 2023-09-02 11:37:31 · 1256 阅读 · 0 评论 -
记一次 boringssl crash
背景是我们的项目有用到boringssl。然后用户(魅族手机)报了一个bug,使用arm64的库的时候,会crash。但是使用armv7的库时不会。我找了日志,定位到代码crash的代码在https://boringssl.googlesource.com/boringssl/+/refs/heads/master/crypto/fipsmodule/rand/urandom.c#171// init_once initializes the state of this module to val原创 2020-05-19 10:42:11 · 906 阅读 · 0 评论 -
C++程序设置启动点(linux)
https://www.bilibili.com/video/av32050101?from=search&seid=11184360984836366468今天在看候捷的视频,发现C++可以设置启动点,在电脑上试了一下,发现是对的,感觉还是挺有趣的,整理了下。tt.c#include <stdio.h>#include <stdlib.h>int ...原创 2018-11-24 10:55:52 · 352 阅读 · 0 评论 -
C代码从初始化到汇编执行
背景是两位老大在讨论动态修改android里面C中的某个Struct 中的 String,然后程序员讨论嘛,就 Talk is cheap , show me your code vim test.c gcc test.c ./a.out#include <stdio.h>struct tests{ int i = 0;};int main(){原创 2017-06-19 13:10:06 · 399 阅读 · 0 评论 -
android C语言调试汇编
有一点示范代码,不过代码内容有点敏感,所以我换成网上找的一段代码来进行调试。源码来自:detect_bt_arm,在android jni中void *thread2(void *) __attribute__ ((noreturn));void thread1(void) __attribute__ ((noreturn));uint32_t global_value = 0;#define原创 2017-11-06 12:56:45 · 497 阅读 · 0 评论 -
udp socket example
前一篇文章提及socket编程,其实只有一半,就是tcp编程.那么socket的udp编程是怎么样的呢?我找到一篇例子,这里做一点翻译。 原文:https://www.binarytides.com/programming-udp-sockets-c-linux/linux ubuntu cUDP sockets本文描述了如何在Linux / Unix平台上使用C编写一个简单...翻译 2018-03-06 11:48:11 · 537 阅读 · 0 评论 -
socks5实现(五)
第三篇博客我写出了简单的tcp转发的demo,然后强哥看了下代码。说了几个比较严重的问题,一个是结构封装不好,只是为了socks5而存在,应该是把epoll封装起来,方便复用。另外就是转发那里做得太粗糙了。 其实写到UDP 代理的时候,我也发现了,加上udp之后,代码复杂了不少。最后我是这样封的:对epoll进行抽象,把socket的建立、监听都放在这里进行,数据通过接口回调出去->...原创 2018-03-18 14:10:06 · 2690 阅读 · 0 评论 -
C++指针的概念
引文java中指针的概念几乎被隐藏了。刚开始写C++的时候是挺晕的,尽管强哥之前有和我说过指针的用法,还用vim演示了下。我很努力的记下只言片语。char* 就是数组。char** 就是二维数组。const char * const是修饰char的,所以字符串的东西不能被修改,指针的内容可以被修改,要想指针不能被修改就要这样做 char const * 这时候const就是修饰指针的...原创 2018-03-17 15:25:24 · 365 阅读 · 0 评论 -
SOCKS5实现(二)
上一篇文章介绍了一些基本概念,以及简单的用现有的软件搭建透明代理。这篇文章简单说下在linux下用C++进行socket编程的过程。 参考: C++ Socket : http://lengly.top/archives/155 C++ epoll : https://gist.github.com/dtoma/417ce9c8f827c9945a9192900aff805b...原创 2018-03-03 17:29:28 · 2989 阅读 · 1 评论 -
SOCKS5实现(四)
上一篇博客 说了一下TCP转发的思路,以及初步跑通了程序。这篇博客继续讲下UDP转发的一些思路,以及分享一点转发的代码。协议上叫做UDP ASSOCIATE,有一点思路先试通过和前一篇文章一样的方式,建立TCP连接。如果cmd是UDP ASSOCIATE,最后连接的时候,是分配一个端口,然后监听这个端口,服务器这边需要给服务器的IP和UDP监听的端口UDP监听的端口,服务器这边要做的...原创 2018-03-10 21:14:50 · 1323 阅读 · 0 评论 -
内存管理
转载来自 http://harttle.land/2015/07/22/memory-segment.html现代操作系统对每个进程都分配了完整的虚拟内存地址空间。进程会把整个地址空间分成多个区间来使用。 程序员最为熟悉的两个区间莫过于堆和栈。然而还有其他的内存区间来存储代码、静态、全局变量等等虚拟内存技术使得每个进程都可以独占整个内存空间,地址从零开始,直到内存上限。 ...转载 2018-03-16 23:18:35 · 250 阅读 · 1 评论 -
Segmentation fault
还是之前博客说的内容,在写socks服务器,然后发现异常退出了。找了一下怎么样用gdb调试,调试挺简单的,就是在连接的时候再加一个-g的参数,然后gdb sever。 举个例子 makefile这样写all : main.o server.o test.o client.o g++ -o server main.o server.o -g -ggdb g++ -o tes...原创 2018-03-08 19:06:17 · 454 阅读 · 0 评论 -
C++ 中 stl map的使用
C++ 中 stl map的使用 详细的使用说明可以看这个 https://cloud.tencent.com/developer/article/1010477 https://cloud.tencent.com/developer/article/1010478弄了一个上午,发现是我用java的思想来写C++,分享一个误用吧 错误的做法//test.hc...原创 2018-03-08 14:17:45 · 201 阅读 · 0 评论 -
SOCKS5实现(一)
引文假如我有一部安卓手机,我想把手机上的全部流量打到指定的代理上(即透明代理),代理外接外部的VPN,以达到分散IP出口的目的。 这是这个系列的第一篇文章,本文将简单介绍一下 SOCKS 、iptable 、透明代理 的概念,以及一点小小的实践。SOCKSSOCKS是一种网络传输协议,当防火墙后的客户端要访问外部的服务器时,就跟SOCKS代理服务器连接。这个代理服务器控制客户端访...原创 2018-02-28 10:53:03 · 8669 阅读 · 2 评论 -
makefile编译so库
makefile编译so库在anroid中,会看到很多原生的so库,so即shared library,用cc编译的时候,指定一下-shared的参数即可编译,怎么弄的呢,举个例子so的生成还是上一篇博客的程序 vim Makefileall : encode.o cc -shared -o libys.so encode.oencode.o : e...原创 2018-02-27 12:20:07 · 5739 阅读 · 0 评论 -
makefile的使用
makefile的使用在uninx下,编译软件用得最多的是make,连android系统的编译也是一个make搞定的。所以还是需要多写写makefile。举个例子: vim Makefileall : encode.o main.o cc -o out encode.o main.omain.o : main.c encode.h cc -c main.c...原创 2018-02-27 10:45:03 · 388 阅读 · 0 评论