Everything you care about in one place

Follow feeds: blogs, news, RSS and more. An effortless way to read and digest content of your choice.

Get Feeder

leadroyal.cn

LeadroyaL's website RSS feed

Get the latest updates from LeadroyaL's website directly as they happen.

Follow now 13 followers

Find similar feeds: Tech Programming Android

Latest posts

Last updated about 3 years ago

llvm学习(二十五):将libfuzzer移植为so的实践

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...

llvm学习(二十四):表情包引发的悬案,浅谈编译器优化

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++) >=...

华为云函数根CA缺失排查

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域名对于...

Android 11 和 MIUI 获取安装来源

over 4 years ago

近期分析一个恶意软件,需要知道是谁安装的它,本文记录 Android 11 和 MIUI 中获取安装者的方式。背景知识Android 10之前,开发者通常使用PackageManager.getInstallerPackage获取安装者的包名,真正调用后,会发现这个API基本毫无用处,只会返回 null、market(应用市场)、vendoring(GooglePlay)、installer(系统安装器。平时我使用浏览器、使用taptap安装游戏,都没有被正确地划分进来,因此这个 API 并没有按照预期工作。Android 11后,多了一个 API...

llvm学习(二十三):NewPassManager API分析及适配方案

over 4 years ago

本文从 llvmGetPassPluginInfo 出发,深入解读 PassBuilder 的各个 API,记录从 LegacyPassManager 迁移到 NewPassManager 的过程。本文使用llvm13,低版本相关API会不一致。llvmGetPassPluginInfo 出发根据背景知识,llvm13以上通过 -fpass-plugin=libPass.so...

llvm学习(二十二):使用llvm prebuilt动态加载pass

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...

llvm学习(十九):CLion源码级调试clang

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"。寻找合适的...

llvm学习(二十):动态注册Pass的加载过程(上)

over 4 years ago

本文主要讲 clang 使用 Legacy Pass Manager 动态加载Pass的原理。背景不知道什么时候,不知道在哪看到,说llvm的 PassManager 更新了。2021年有读者反馈llvm14加载pass失败,我当时没空处理,而且认为是读???自身问题。2022年5月7日,immortal学弟使用 llvm13 prebuilt library...

llvm学习(二十一):动态注册Pass的加载过程(下)

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》),借着渲染能力的大幅度提升,成为新时代初期的优秀作品。在十年前,将它视为一部叙事电影类游戏,那它确实是实至名归。听朋友说,第二部和第三部甚至不如第一部,目前一点玩的想法都没有,希望那天的到来(未完待续。。。)