- 博客(9)
- 收藏
- 关注
原创 llvm::sys::PrintStackTrace
例如,llvm::sys::PrintStackTraceOnErrorSignal 函数可以在接收到错误信号(如 SIGABRT 或 SIGSEGV)时打印堆栈跟踪并退出程序。使用 llvm::sys::PrintStackTrace 时,你需要提供一个 llvm::raw_ostream 对象来接收打印的堆栈信息。需要注意的是,为了使 llvm::sys::PrintStackTrace 能够正确工作,你的程序需要在编译时包含调试信息,并且在运行时能够访问到这些调试信息。// 打印堆栈跟踪到标准输出。
2024-10-13 21:31:10
263
原创 HTTPS解密
如果服务器和客户端之间使用了Diffie-Hellman加密算法(如ECDHE),则即使您拥有服务器证书的私钥,也可能无法解密流量。这是因为Diffie-Hellman算法在客户端和服务器之间动态生成加密密钥,该密钥不会在网络上传输,因此无法通过Wireshark捕获并解密。总的来说,拥有服务器证书的私钥是解密HTTPS流量的关键。通过正确配置Wireshark并使用私钥,您可以查看和分析HTTPS流量中的明文数据。在Wireshark的捕获窗口中,您应该能够看到解密后的HTTPS流量。
2024-08-23 15:13:57
551
1
原创 malloc插桩
1、__real_malloc 和 __wrap_malloc 需要使用 extern "C" 修饰,因为 gcc 和 g++ 的函数重命名规则不一样(详见《程序员的自我修养--编译、链接和装载》)2、fputs 不能输出到 stdout,只能输出到 stderr,输出到 stdout 会调用 malloc。1、malloc 函数中不能使用 printf,printf 会调用 malloc,使用 fputs 做替代。1、替换的宏定义在 main.cpp 中,不对 hook.h 中的 malloc 做替换。
2024-07-19 09:54:48
492
原创 GDB中指定二进制文件的代码路径
在GDB中指定二进制文件的代码路径可以使用set substitute-path命令。这个命令允许你将原始代码路径替换为调试时所用的路径。这样,GDB在显示源码或设置断点时会自动将来自/original/path的文件请求重定向到/current/path。这样,GDB会在你指定的路径中查找源码。
2024-04-17 17:25:56
433
原创 findbacktrace 0x39e78728(sp) 2000(遍历次数) 0x0002cf00(.text开始) 0x01385d28(.text结束)
set $i = 0endset $i++endelseendend。
2023-11-17 11:23:36
63
原创 gdb获取虚表地址
nm core | grep "LOAD" | grep "虚表地址"根据上一步的虚表地址查找Core中Class的所有实例地址。经换算成虚拟地址在gdb中打印。获取Class的虚表地址。
2022-11-29 13:46:05
446
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人