从17到18

2017年过去了,想写篇小结,总结一下过去。因为去哈尔滨耽误了几天,就顺便把18年的计划一起写出来吧。

===

17年纪实

先梳理一下17年发生了什么吧。

  • 2月份的实习

过完年就来到了北京,待了2个半月的时间。工作的内容现在看来主要分为两块。一是对展开工具的完善,二是对clang的bug进行了简单的研究(未解决)。

  • 毕设

毕设其实挺简单的,思路还是比较清晰的,主要是使用 PyQt + C++ 构造的加密工具。

  • 毕业后的旅行

玩!

  • 入职到现在

emmmmm…

===

收获

  • 首先是对于LLVM体系的熟悉。clang的Lex、CFG、Transform、Printer还有LLVM IR的构成、生成这几部分的源代码和文档都有了一定的了解。

  • 代码规范问题。尤其是在对引擎的功能添加之后,有了如下几条总结:

(1)需要if判断的时候,在尽可能的情况下,不要省略if分支,确保代码包含了所有可能出现的情况,避免防不胜防;

(2)该有的检查,一定要有。如果上一次的条件检查距离当前较远(比如不是一个函数内)一定要再检查一回;

(3)判断条件加不加 !思考清楚,尽可能避免将大量的内容放入到判断条件之下;

(4)内存手动分配的,谁分配谁回收,要在同一个函数或同一个域内完成;

(5)流程中模块间耦合度的判断,以及相互逻辑从属关系的判断;

(6)A情况下的bug和B情况下的bug都被修复了,想想A和B同时出现的的情况;

(7)一类问题的处理流程、接口要统一,不要因为某种情况可以简化代码或者流程就单独处理;

(8)优先确定日志的优先级问题,统一错误处理和错误分类;

(9)语言描述需求,伪码确定逻辑,整理适当后再写。

以上为这半年工作编码过程中印象比较深刻的注意点,都是踩过的坑,要牢记。

  • 熟悉了一些C++的语言标准,纠正了一些误区。

  • 适应了Mac下的工作环境,尤其对于命令行的使用越发熟练。

===

不足

这个过程中也有一些想完成的事情因为各种原因搁浅或者完成度不够

  • blog的迁移,断断续续,不过现在算是基本完成了(没完成的也不太想搞了)

  • 新学的JavaScript和Go都没有完全熟悉,搁浅了。

  • 对程序静态分析找到的资料还没看完,开源工具的使用和源码也没熟悉。

  • 数学知识,看了部分就停滞了。

  • 对几款开源工具的研究也没完成(尤其是miasm)。

总之,动手的不少,但是完成的不多

emmmm…

===

18年计划事项

18年希望完成的有如下几件事情

  • 回顾算法知识,LeetCode用JS和Go多刷点,包括已经刷过的。这次要注意记录思路。

  • LLVM本身的程序静态分析功能要搞清楚。

  • LLVM IR的生成和IR的设计文档,进一步熟悉IR。

  • 开源项目,方向可以放在Java的控制流混淆和解释型语言转化为LLVM IR上。

  • 熟悉反汇编的内容,争取对现有工具最一些个性化修改。

  • 对二进制安全攻防手段的积累。

  • 读书…

先记录这么多,周末可以想想是否有遗漏的。