Lambda 表达式

自从c++ 11后引入的新东西,感觉其实很实用,可以简化一些函数的声明,或者把一些短函数直接转化为lambda表达式写入

语法格式

[ captures ] <tparams>(可选)(C++20) ( params ) specifiers(可选) exception attr -> ret requires(可选)(C++20) { body }

[ captures ] ( params ) -> ret { body }

[ captures ] ( params ) { body }

[ captures ] { body }

继续阅读

最近重新折腾了下服务器,typecho虽然一片大好,但是手动更新好烦啊= =。。。还是回归wordpress把

 

想起 Let’sEncrypt 说今年3月左右会提供 wildcard 的证书,正好重新申请一波

 

0x0 下载最新的 certbot-auto

去 LetsEncryt 下载= = 或者点这里, 选择对应的系统和 web 系统

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

如果已有 certbot-auto 检查版本是否 >= 0.22

./certbot-auto --version

0x1 开始申请

./certbot-auto certonly \
--server https://acme-v02.api.letsencrypt.org/directory \
--preferred-challenges dns  \
--manual \
-d example.org -d *.example.org

这里参考了官方文档这里要求验证方式为 dns

由于 wildcard 是 V2 版本才出现的 API, 要指定 –server 到 V2 的 api 地址,有关 API 地址说明(在这里)[https://letsencrypt.org/docs/acme-protocol-updates/]

修改好域名然后执行, 最好放在 screen 内执行,因为 DNS 验证是需要修改两次 TXT 记录的(两个域名),如果直接跑可能会导致 ssh 掉线,然后就白来了。。。

0x2 按着步骤来吧

等确认完记录 IP 后, 会提示你修改 _acme-challenge.example.org 的 TXT 记录,然后就去修改把,记得把 TTL时间改小点,不然真的等很久

改完后本地验证一下

nslookup -query=txt _acme-challenge.example.org 8.8.8.8 | grep -o -E "\"(.*?)\""

是否和给出的值相等, 如果相等再按回车,不相等的话就等等,如果验证失败会重来的,

第一次修改后,应该会再次提示一次修改= =,同上

0x3 安装

貌似 certbot-auto 可以自动安装证书的,可惜我弄的时候没折腾,因为之前有证书了,怕配置乱了。

nginx 的参考配置如下

listen 443 ssl; 
ssl_certificate /etc/letsencrypt/live/example.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.org/privkey.pem; 
include /etc/letsencrypt/options-ssl-nginx.conf;

if ($scheme != "https") {
    return 301 https://$host$request_uri;
}

差不多就这样了

0x0 介绍

Cuckoo Sandbox 是一个挺不错的沙盒, 用于一些病毒的简易分析还是很有意思的, 最重要的是这货开源!!

从 python 的框架到 window 的 hook 框架都是开源的, 心情好的话可以自己去折腾扩展, 挺有意思的, 而且有很多的扩展模块, 不过本文并没开233333. 毕竟开得多错的多= =233333 ….

继续阅读

随手记录一下一些老忘记的宏…

_WIN64
#define xx(fmt, …) dbg_print(fmt, VA_ARGS) 贼特么好用的…

有时候需要自定义一些fmt的参数, 如果用上面的宏可能会导致多一个 逗号的情况

则可以用如下的

#define LCORE_ID(fmt, ...) printf("LCORE[%hu]"#fmt, rte_lcore_id() __VA_OPT__(,) __VA_ARGS__)

替换列表 可以含有记号序列 __VA_OPT__ ( 内容 ) ,若 __VA_ARGS__ 非空,则它会被 内容 替换,否则不展开成任何内容。

Reference

  1. cppreference.com

0x1. 搭建 VMWare-WinDBG 调试环境

0x2. 配置 IDA6.8

  1. 打开 IDA 目录,找到 cfg 文件夹下的 ida.cfg

  2. 669 行左右有如下配置信息

// DBGTOOLS = "xxxxx";

去掉双斜杠,并且把路径设置为 WinDBG 的 x86 的路径

DBGTOOLS = "C:\\Program Files (x86)\\Windows Kits\\10\\Debuggers\\x86\\";

(话说我也不知道为什么设置 x64 就死活不能用,反正设置 x86 也可以调试 x64 的内核)
3. 保存配置,启动 IDA6.8
4. 选择菜单 Debugger->Attach->Windbg debugger
1. Connection string: com:pipe,port=\.\pipe\com_1
2. 选择 Debug options->Set specific options
1. Debugging mode 选择 “Kernel mode debugging” or “Kernel mode debugging with reconnect and initial break”
3. 最后一路 ok 后,会弹出 Choose process to attach to 的窗口,选择 ID=0, Name=\<Kernel> 的选项,然后确认。
4. 然后卡死。然后等着。。。最后开始调试

  1. 目标虚拟机内 CMD 管理员权限执行
bcdedit /copy {current} /d "Backup"
bcdedit /debug  on
bcdedit /bootdebug on
bcdedit /timeout 2
bcdedit /dbgsettings SERIAL DEBUGPORT:2 BAUDRATE:115200
  1. 关闭虚拟机

  2. 配置虚拟机,增加串行端口

    1. 输出到命名管道
    2. 命名管道命:(开心就好的设置)
    3. 该端是服务器
    4. 另一端是客户端
    5. 完成
  3. WinDbg 配置
    File->Kernel Debug->Com

    1. Baud Rate : 115200
    2. Port: (刚刚开心的地方就写进来吧)
    3. Pipe 勾选上
    4. Reconnect 勾选上
    5. 确定
    6. 打开虚拟机

然后就可以开心 Debug Kernel 了