LimeSdr dump1090 折腾小记

最近买了块limesdr开发板,废了点劲装好之后发现只能听听电台,估计是天线没搞好,后面少不了还要折腾,不过这板子是全双工的,大概以后也不影响自己发送自己接收,不过人生的一大乐趣在于折腾,手机折腾够了,该玩玩没玩过的东西了(x

这个频段是做什么的,估计看到这里的你已经不需要我额外的废话解释了,dump1090这个项目也比较老了,于是有了无数个fork,其中有人给limesdr做了适配:
https://github.com/Gluttton/dump1090/tree/limesdr

老规矩。

装好你的ubuntu16-18,安装官网驱动:
https://github.co[……]

查看文章

CPP琐记 04 类的空间布局

空类

class Empty{};

Empty empty;
auto *empty2 = new Empty();

std::cout << sizeof(empty) << std::endl;
std::cout << sizeof(*empty2) << std::endl;

输出sizeof的时候直接被编译器优化掉了,以及空类只有1个字节,显然创建对象必须要有一个最小的内存空间。

auto *empty2 = new Empty();
auto *empty3 = new Empty();

std::cout <&l[……]

查看文章

CPP琐记 03

杂记,后面会补充

lambda
[捕获列表] (参数列表) -> 返回值 {函数体}

如果lambda会生成一个匿名函数的话,并不难理解工作原理,但如果捕获列表中使用了一个局部变量会怎么样呢?

我们看最后一句
由于f是另外一个匿名函数,因此会被翻译成正常的函数call

通过ida反编译可见,i已经被提到了类成员变量上

彩蛋

我把我自己整乐了

[……]

查看文章

CPP琐记 02

没写完,一点点补全吧,包括前面的内容,不定期编辑,老样子,只写难点

容器

Vector,犹豫不决就用它,其实这玩意大概是个可变长的数组(我现在还没看过STL的源码)?看起来以后可以试着实现一下。
猜猜cpp书上说的,当没有默认构造函数的对象用作Vector初始化的情况会怎么样?

IDE语法提示正常, 编译时:
no appropriate default constructor available
不难理解为什么不能这样初始化,但书上的例子实在太抽象了。
实际上对应:

explicit vector( size_type count,
  &nb[……]

查看文章

CPP琐记 01

算是每天学习/加深的一个记录,尽量每天补充…

const相关

我以往对const的理解,除了常量以外,用在函数的参数里面可以防止被修改,但经常和指针放在一起就忘记了优先级有点蒙

const int *a;
int const *b;
// 均为指向int常量的指针

看啊,多么迷人的陷阱等着你跳,结合之后很明显他俩是一个东西……
其实真正有区别的是

int *const c; //指向int的常量指针
const int* const d; //指向一个int常量的常量指针

用在函数返回值里面可以达到更迷惑的效果,clang甚至会警告你。
const int func[……]

查看文章

突击CPP

现实中发生了一些事情,让我萌生了一定要突击掉CPP的执念。

按照以往的经验,学会一门语言的最好办法就是扔掉上一门语言,但到了CPP这尤为困难,仔细想想怎么都还是因为我对C#的熟悉程度,基本上什么都能用它写,就算不能,用到些底层的还可以用C,导致我CPP很多地方练不到,甚至对一些基础概念也很薄弱。

说多了都是借口吧,立flag也是不好的,希望个把月后,回来看这么一段话不会觉得自己打了自己一巴掌。。。

另外希望后面有机会一点点在刷点leetcode吧。。。

暂定的读书计划

《C++ Primer》

《Effective C++》

《深度探索C++对象模型》[……]

查看文章

Crash, Crash, Crash

最近开发项目碰到了个很神奇的野指针问题,在arm64下正常,armv7a下炸了,然而这个项目是从C代码移植过来的,ndk那边只做了层CPP的封装,配置gradle的时候,直接指定了外部cmake,因此没办法直接用android studio调试,至少我不知道有什么办法可以导入源码。

然后你看logcat,炸了就一条简单的Fatal signal X,真的是让人摸不到头脑,本来想挂lldb的,但实在懒癌,不过没办法,就搜了下buildin的lldb在哪里,结果被引导到了谷歌的调试页面:

https://developer.android.com/ndk/guides/debug

[……]

查看文章

认真你就输系列 – Arm间接寻址

我们都知道x86中的寻址相对于arm稍微简单一些,arm因无法直接操作内存地址,所以需要使用成对的ldr和str指令完成操作,因此,在操作一些常量或者字符串的时候,免不了要寻址,常见的教程版本大概是这样子讲的(摘抄):

汇编器编译后,反汇编看大概是长这样的:

乍一看没什么问题吧?ldr r0, [pc, #12],PC + 12的地址就是变量地址,那么我们找一个真实世界里面的例子,随便一个android arm的so文件好了,原因呢,是因为有人问我ida里面为什么用这种方式表示

说实话我也只是知道这里是把字符串加载进来,但从来没较真过这个问题,结果认真就输了,问[……]

查看文章

Tracing

最近感觉记忆力衰退,遂写几篇文章进行备忘。
代码分析的过程中,经常会碰到大坨难懂的逻辑(比如动态的函数指针,鬼知道它跳到哪里去了),或是难以定位关键点的问题,这个时候就需要tracing技术了,把所有的调用记录下来,再静态分析对流程进行梳理。
用tracing技术可以用来对付那些恶心的混淆(ollvm一类),或者找到程序的执行路径,但依旧免不了大量的人肉分析工作,很多时候并不会起到关键性的作用,所以我时常在想,如果我能针对trace的结果做些自动化的话,可能会有奇效,之前画眉的课程里面,他曾经说过,如果破解程序的时候可以记录全部的jcc指令,对比下用正确激活码走的流程是怎样的(虽说大部分程序有[……]

查看文章

“合法”の酷鸟浏览器

注意!本文不是广告,更不是软文,找激活码请绕道,咱根本就没用过

好吧,我承认标题有点戏虐,今天群里看到张图

emmmm,从哪里开始吐槽呢?什么时候访问国外热门网站不合法了吗?当然不会讨论这种无聊话题的话~

下载到的是一个安装包,我虚拟机前段时间搞炸了,也懒得装了,毕竟听说要用的话也得实名注册 + 激活码,更何况我只是好奇。

那么工具人一号上线了——7zip

安装包里面毫不掩饰的就一个chrome呗,这道也没啥好吐槽的。

再往里面有一个比较引人注目的目录名:

喵喵喵?

ss-local.exe 这名字也太眼熟了吧?

工具……啊呸,[……]

查看文章