摘要:
查看某个 bin/so 依赖的链接库 ldd $bin ldd -v $bin 动态连接库加载顺序 LD_PRELOAD > RPATH > LD_LIBRARY_PATH 使用 LD_PRELOAD LD_PRELOAD=/opt/libstdcxx/lib64/libstdc++.so.6 $b 阅读全文
摘要:
如果一个binary太大包含的符号太多,gdb启动的时候会特别慢 可以通过gdb索引的方式加快速度 gdb-add-index $bin 参考: https://man7.org/linux/man-pages/man1/gdb-add-index.1.html https://stackoverf 阅读全文
摘要:
1 WSL2 安装 2 检查WSL2 是否能work PS > wsl --list -v NAME STATE VERSION * Ubuntu Stopped 1 Ubuntu-20.04 Stopped 2 docker-desktop-data Running 2 docker-deskto 阅读全文
摘要:
一些逆向技巧 对于没有strip过的binary,我们可以拿到函数符号名 nm -D $bin 当然,也可以看到binary中的具体名字 nm -C $bin 通过函数符号名,我们可以查看到对应的汇编: objdump $bin --disassemble=$symbol 也可以用于gdb打断点 g 阅读全文
摘要:
docker 安装 wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.5.tgz docker 预编译包没有任何的动态依赖,所以在大多数Linux环境上都可以运行 sudo cp docker/* /us 阅读全文
摘要:
docker 启动的时候添加 docker run --cap-add SYS_PTRACE 或者 docker run --privileged 参考: https://github.com/google/sanitizers/issues/764 阅读全文
摘要:
C++ Defer C++ 中并没有官方的defer操作,所以需要自己实现一个。 跟一个guard函数类似,在一个栈对象的析构函数中调用defer函数,`std::function` 是一个不错的选择,可以bind一个已经存在的函数,也可以使用lambda表达式,所以第一个版本defer长这样: ` 阅读全文
摘要:
内联 虚函数 和 CRTP 虚函数 和 内联 出于一些系统设计的原因,导致我们在编写程序的时候通常是面向抽象编程的。比方说我们设计了一个计算框架,通常是面向一个接口编程的。 class Expression { public: virtual void update(Context* context 阅读全文
摘要:
SSE && AVX 寄存器 SSE 和 AVX 每个都有16个寄存器,SSE 的有 XMM0 ~ XMM15,AVX 有 YMM0 ~ YMM15,XMM都是128 bit的,avx都是 256 bit的 SSE 有三种类型定义 _m128,__m128d,__m128i,float,double 阅读全文
摘要:
64 位的程序通常需要链接 libuwind,但是很多时候并不想链接这个lib,因此我们需要禁用这个lib 使用 configure 的方式 ./autogen.sh /configure --prefix=$TP_INSTALL_DIR/gperftools --disable-shared -- 阅读全文