Follow feeds: blogs, news, RSS and more. An effortless way to read and digest content of your choice.
Get Feederleadroyal.cn
Get the latest updates from LeadroyaL's website directly as they happen.
Last updated about 3 years ago
over 3 years ago
libfuzzer属于llvm-project下的compiler-rt,通常情况下我们是将 libfuzzer 静态连接到可执行文件里的,本文介绍一种将 libfuzzer 移植为动态连接库的实践。背景知识介绍看一个官方的example代码,非常简单易懂123456789#include <stdint.h>#include <stddef.h>extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data...
over 3 years ago
前言某日在群里看到这张很怪的表情包,想着这不是扯淡么,一看到运行结果顿时傻眼了。。。尝试复现1234567#include <stdio.h>int main(){ while(1) ;}void unreachable(){ printf("HelloWorld\n");}先放一个在线编译C代码的网站:https://godbolt.org/编译选项结果gcc全版本 -O0/O1/O2死循环g++全版本 -O0/O1/O2死循环clang(C语言) 全版本 -O0/O1/O2死循环clang++(C++) >=...
about 4 years ago
最近几年Serveless的云服务越来越火了,刚好这个周末准备试用一下,写点小工具。测试访问自己的网站时,一直失败,搞一下午最后发现是华为云的一个BUG,没有预置完整的根证书,这也太扯了,记录一下顺便提个单吧。表现使用华为云的函数工作流功能,编写python代码,在代码中使用 urlib3 或 requests 访问网站并打印内容,简单测试是正常的,例如访问百度的http和https站点。作为一个有自己博客的人,也经常会把自己的网站作为测试用例的一部分,结果发现,居然报 SSLError [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self...
about 4 years ago
最近有朋友公司发了一台老旧的安卓机,但开机后强行要求注册设备,经久失修也不知道如何注册,无法正常使用,让我来帮忙看看,最后帮他搞定了。背景第1天,如图所示,朋友说无论如何操作都跳不出去,手机无法使用。第2天,朋友问我能不能刷机,我说等我有空给你看看。然后他自己进入了recovery模式,恢复出厂设置,然后就能正常使用了。第3天,朋友说手机没电重启了,重启后再次触发了该界面。再次恢复出厂设置,但是没有效果。我说好,给我留着,我慢慢看看。思路分析这个表现,只能在某个APP内活动,猜测:可能是该APP覆盖了界面,接管了各种操作,表现出来就是和锁机软件一模一样,用户无法使用。恢复出厂设置后就好了,猜测:它很可能是一个APP,是后期被安装上去的。(我本以为这时候就万事大吉了)重启后再次触发,猜测:这个APP可能有开机自启动,需要注意。再次恢复出厂设置,无法解决,猜测:卧槽,有挂!经过上面的猜想,我有上中下三策:上策:众所周知啊,很多有问题的设备我摸一摸就会恢复正常,万一自己就好了呢?中策:找到这个APP,卸载掉。(可能没这个机会)下策:找到ROM包,进入bootloader刷机。(可能系统签名会校验失败)实操上策?高兴太早这是一台华为mate10,属于大厂常见机型,唯一区别在于它开机后先展示 "picc",后展示 "Huawei",看起来定制程度很高。我开机后,确实没有看到桌面,直接进入了锁机APP里。想尽各种办法,进入了recovery,恢复出厂设置后,重启,此时出现了初始化引导,火速完成后,桌面可以正常进入了,哦吼,果然还得是我,很多设备我摸一摸就好了。高兴了还没一分钟,锁机APP又来了,好吧,“上策”直接失败。再次重启,发现可以进入桌面,但数秒后,锁机 APP 就会被启动,多次重启后亦如此,稳定hang。中策?一线生机这时候聪明的读者就知道了,手速快的话可以在锁机 APP 启动前把它干掉,但我没这个实力,我手慢,想到一个笨办法:既然每次开机只有几秒的操作时间,开启开发者模式,adb连进去,就可以获得无限的操作时间。第一次开机:狂点版本号;第二次开机:迅速开启 USB 调试;第三次开机:授权 adb 调试,还好定制机没有把这个功能砍掉。此时我已经获得一个稳定的shell,“我的双眼一片黑暗,但,我???到了更多!”adb吧轻瞥一眼1234➜ ~...
about 4 years ago
三年之期已到,龙王归位!之前买了三年的VPS要过期了,续费太贵续不起,周末从上海搬到了杭州,分享一下过程中遇到的坑,纯水文、无干货,建议绕道。从 ubuntu16 到 ubuntu22,跨越6年的长征。。。背景本站源站之前长期部署在腾讯云上,最早使用腾讯云 1 元的学生服务器;毕业后使用最低配的服务器,续了几次45元每月的(太贵了),后来在叠加各种优惠券后,390元续费了3年(性价比极高)。现在终于到期了,一个月36元还是有些小贵的,之前人和机器都在上海,现在人在杭州,想买个杭州的机器,最终决定新买一个。作为腾讯云的老用户,在腾讯云逛了一圈,没有杭州机房,1c1g的机器全部售罄,新买2c2g的比较贵,直接续费1c1g最优惠半价,是18元每月。杭州机房只有阿里云才有,价格也合理,0.2c1g的机器,5年600元,10元每月。开整!搬家!迁移前资源分析域名资源:'@':指向源站。www:使用腾讯云CDN,挂在 www CNAME下。源站资源:使用 apache2对于根域名的请求,全部 301 到 www域名对于...
over 4 years ago
近期分析一个恶意软件,需要知道是谁安装的它,本文记录 Android 11 和 MIUI 中获取安装者的方式。背景知识Android 10之前,开发者通常使用PackageManager.getInstallerPackage获取安装者的包名,真正调用后,会发现这个API基本毫无用处,只会返回 null、market(应用市场)、vendoring(GooglePlay)、installer(系统安装器。平时我使用浏览器、使用taptap安装游戏,都没有被正确地划分进来,因此这个 API 并没有按照预期工作。Android 11后,多了一个 API...
over 4 years ago
本文从 llvmGetPassPluginInfo 出发,深入解读 PassBuilder 的各个 API,记录从 LegacyPassManager 迁移到 NewPassManager 的过程。本文使用llvm13,低版本相关API会不一致。llvmGetPassPluginInfo 出发根据背景知识,llvm13以上通过 -fpass-plugin=libPass.so...
over 4 years ago
llvm pass学习的第一步是编译llvm-project,曾经我对这个前提坚定不移,痛点是耗时长、占硬盘。本文介绍不编译llvm-project,但也能进行学习的方案,极大降低初学者的门槛。背景2018年,小花椒说brew安装的llvm有坑,没有进行尝试;2022年5月,帮immortal学弟验证问题时发现llvm也有官方prebuilt,本文不编译llvm,使用prebuilt进行尝试,记录结果,结论是prebuilt没问题、很适合学习。汇总测试环境能否动态加载pass大小备注linux + 官方release能2.5G完美ubuntu + apt能/完美macos + 官方release能2.4G有-lSystem问题macos + brew能950M完美linux + 官方release下载、解压123cd...
over 4 years ago
2018年,我问小花椒pass如何调试,椒哥告诉我他直接调试clang,用gdb,显然对于我这样的菜鸡来说太难了,但我一直没有到调试clang的地步,一直没管。2022年5月,想学习一个新特性被迫调试clang,记录一下这个过程。环境准备MacOSCLionllvm-project操作步骤本文参考:https://blog.csdn.net/qq_21746331/article/details/110198265使用clion打开llvm-project/llvm正如我们平时编译llvm,使用的也是llvm下的cmake。使用clion打开的是 llvm-project/llvm 、并不是 llvm-project 本身。配置cmake编译选项正如我们平时编译llvm,也给出合理的配置即可,为了调试,BuildType 选 ReleaseWithDebInfo,Generator选 Unix Makefiles,参数我喜欢这段 -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PROJECTS=clang -DLLVM_TARGETS_TO_BUILD="X86"。寻找合适的...
over 4 years ago
本文主要讲 clang 使用 Legacy Pass Manager 动态加载Pass的原理。背景不知道什么时候,不知道在哪看到,说llvm的 PassManager 更新了。2021年有读者反馈llvm14加载pass失败,我当时没空处理,而且认为是读???自身问题。2022年5月7日,immortal学弟使用 llvm13 prebuilt library...
over 4 years ago
本文主要讲 clang 使用 New Pass Manager 动态加载Pass的原理。从 EmitAssemblyWithNewPassManager 开始上回我们提到,llvm11 通过一个配置项,可以开启新版的 PassManager,此刻,我并不知道新版的怎么用,我想通过阅读代码来找到灵感。进入分支1234if (CGOpts.ExperimentalNewPassManager)...
over 4 years ago
重温十年???(2013)的游戏,感慨万千,大人,时代变了。第一部:《古墓丽影9》虽然之前一丁点了解都没有,但古墓丽影的大名我听到无数次,满怀期待开始游戏,说实话,它跟我心中优秀作品还是差了很多。我想了很久,该如何介绍这款作品,从时代的变迁来讲,会体验到更多。女主劳拉克劳馥。平时关注一些游戏资讯,劳拉是最受欢迎的几个女主角之一(可能是第一名?),用到处都能看到的一句话总结,玩家见证了一个科学家成为一个女战士的成长过程,人物塑造非常成功。其他 npc 印象还真不深刻,每个人也就几句话的事情,一群没用的东西罢了。整个剧情就是出海探险发生意外,寻找队友,对抗岛民,破解诅咒,逃离孤岛的故事。画质。即使在 2022 年,古墓丽影的画质依然是一流的,环境特效细致,人物制作精美。在高处俯瞰整个地图,美不胜收。印象最深刻的是历经艰辛爬信号塔求援的时候,穿着单薄的衣服,攀爬高耸的信号塔,一边爬一边发抖,到塔顶后成功启动,看到远处升起的太阳,将之前的疲惫都忘掉了。此外,暴雨、暴雪、狂风、血迹,是家常便饭,渲染得也很不错,玩起来惊险刺激,如果把无聊的跑路部分去掉,可以更上一层楼。游戏性和操作性。这里就一言难尽了,游戏完全是线性的,到处都是空气墙,探索隐藏奖励一般,交互只有一种可能,从头到尾都要按照既定的流程,有一种被迫玩游戏的感觉,每次觉得终于要解脱了,又有队友被抓走了,这种体验很差,我玩到80%就玩不下去了。操作方面,虽然有近战、弓箭、手枪、步枪、霰弹枪,但敌人只有小兵,而且是无穷无尽的小兵,战斗系统不好用;非战斗时,都在跑酷和收集,全程捡破烂,再捡一点岛上的古物,看看古物说明猜猜剧情,然后就没了。再吐槽一下,劳拉是考古学家,这个战斗能力堪比特种兵,经常有种出戏的感觉。时代的局限性。按照现在的评价方式,除了画质之外,这个游戏好像没什么优点,这种好莱坞大片式的作品,放现在也就普通水平,完全线性的流程早已被抛弃了,无法达到自由度的底线。当年好评如潮,很可能因为劳拉这种硬汉角色,能够一个人带飞全场,对艰苦条件的反抗精神打动了玩家,配合上压制性的画质(参考同时代优秀游戏:《鬼泣4》),借着渲染能力的大幅度提升,成为新时代初期的优秀作品。在十年前,将它视为一部叙事电影类游戏,那它确实是实至名归。听朋友说,第二部和第三部甚至不如第一部,目前一点玩的想法都没有,希望那天的到来(未完待续。。。)