2023近况
# 2023 近况
应该是从去年开始就一直没更新过博客了,之前做的很多事情都比较长时间,处于摸索摸索的阶段,于是一直没能认真写一些东西。最近做了一些比较困难的事情,越发感觉需要记录一些笔记,而且这件事情也开始逐渐步入正轨。 开始从简单梳理下过去一年的经历,然后慢慢的写博客吧。
去年做过很多技术上的东西,各种各样。22-23这一年都在找工作,学的技术也基本都是面试和实习/工作来用的时候学的。
# RASP
最开始,我在一家创业公司写代码,远程,编写一套golang的rasp。这个项目最后交付了,但是其实现在再回头看似乎可以更加完善。
# 挖洞
我去过360漏洞研究院实习了一阵子。
做的事是华为鸿蒙系统的某个APP的漏洞挖掘,这段时间段我折腾了个老版本鸿蒙的ROOT,然后几乎逆向完了那个APP的整个状态机,然后再自定义的内存分配的位置挖到了两个洞。那段时间熟悉了非常多安卓相关的东西,并且在"遇到问题-解决问题"的循环跑了很久,还是挺开心的,当时的实习生同事和导师也是非常非常不错!
当时几乎快要转正吧,还有个什么答辩,然后用我浑身解数写PPT,最后还挺合一个在挖应用层的大哥的想法,于是顺利,甚至是高分通过。然后就是360没有HC,整个事情很离谱拖了很久,11月才说,手里也没其他面试的了,很被动,但是也没办法,不过漏洞挖掘的故事就先到这了。
# 编译器优化
在去360之前我其实还面试过一家底层开发的公司,因为之前的项目经历有关于编译和LLVM的事情,于是在某招聘软件上被找到然后面试的,对方是做编译器开发 基于LLVM做异构优化的。
面试问的问题大部分关于LLVM和编译优化之类,还有一些我完全没了解过的问题,有个关于死代码消除问题应该是,但是当时完全不知道,用关于GC的知识提了提类似标记清除的方案。
结果后面开始真做了做SSA才发现LLVM基于SSA进行的死代码消除确实像是标记清除。
然后后续去漏洞研究实习就给拒了,结果等到360没HC以后,思考半天于是再次询问这边。
当时已经11月,手里最后一个安卓在业务相关面试直接被拒以后其实没有什么在面试的,也很感谢当时女友的支持,冷静思考了下秋招结束春招没开能做的也不多,直接厚脸皮来问想来实习。然后老师们再次面试感觉ok,于是又安排了个关于"探索LLVM对向量化所作的努力"的7天任务。于是又嗯啃了一周的LLVM提交了相关代码分析的报告。
当时也是顺利通过。然后再第一周配好环境以后就修复了一个他们排查了两周的bug。
而有漏挖和逆向经验的人对CPP代码排查的能力确实还可以。
其实一开始是期望如果能实习转正的话也很不错,但是很快发现有点危险,当时那个项目看起来大家不太能维护的下去,然后我去补了补学校的最后考试,然后就跑路了。
后来这些编译器大哥开始做GPU优化啥的,也正好赶上AI火起来,希望越来越好吧。
# RUST后端+React前端开发
从编译器跑路以后,基本就是面试和开始准备学校的论文了。
论文选题了个B/S构架的通讯,然后选择了Rust写后端 React写前端,还是挺有意思的,但是写的非常简陋,最后应付了下论文。
面试的话大四下了,只能吃点老本,不可能再能学啥新东西了,当时大部分自己投的就是沉了,内推的基本上都有些进展,"大厂的漏挖 vs 中厂的业务 vs 创业公司的程序分析" 中,我选择了程序分析,甚至收到offer直接推了其他的两家。 其实想起来也有点冲动,但是当时就是比较求稳,做的事情也比较有意思,而且我的两个好朋友已经确定也要在这家公司了,于是直接确定了。
# SAST工具
我的两个好友:LongLong (opens new window) 和 Rookie (opens new window) 在我还在漏洞挖掘岗位受苦的时候已经在yaklang.io团队了。
面试时我其实早就也知道Yakit以及Yaklang,我其实以前也做过自己的编程语言 基于栈虚拟机也实现了函数调用,但是yakit的名气基本上是网络抓包重放那一块的,当时其实也不知道为什么会要我的简历,但是还是很顺利地进到了面试。
面试官就是yaklang.io团队的leader 姬哥,在面试中聊的比较多的是关于编译以及我的技术栈,谈及yaklang的闭包和代码分析以及LLVM的ssa格式IR。
后续在毕业后就入职,在23年7月开始和LongLong写一套简单的sca工具,然后我开始正式的了解“我是来干啥的” 也就是关于程序分析的一个愿景。
在目前的编译领域的程序分析技术中,SSA格式已经是一个比较常见的设计了,但是在安全的静态代码分析领域,这个基础设施还远得很,目前的很多工具都是基于常规的、学院派的程序分析方案做的。
当然我的调研感觉学院派技术没有SSA相关的这有一定原因是SSA本身是一种IR层的设计思路,并非是技术方案,因此实现了SSA格式的IR甚至都要分为很多种类,每种都有各自的特性。当然也没人说自己是最规范的。
于是大学毕业+找工作在2322夏--2023夏折腾了一年才结束,并且在23年7月,我加入到yaklang.io团队,并且开始负责基于SSA格式IR的一套静态程序分析方案的研发。