终于要做个自己的软件了.Net RuntimeExplorer的前世今生

    最近一个吝啬至极的前同事突然要请大餐,这让我有点肝颤,果不其然是有求于人,也不知他听谁说的,说我多年前曾经指掌江山并在某方面小有建树,今天这是上门求援来了。具体是什么呢?公司上新项目,时间短任务重,就想把大海对面某公司的核心代码拿来一用,但公司里那些大牛纷纷表示自己不是牛,要么踏踏实实多招人加班加点干,要不就另请高牛。

    想来也会是这样,术业有专攻,这不是那些前后台全能手和数据大帝能玩得转的,回家后便把多年前自写自用的工具程序发给他,没想到竟然还能用,只各方面是还需要手动,无奈在下班之后,带着电脑去他家熬了两个通宵才搞通了大半。结局?唏嘘感慨呐,吝啬的同事与吝啬的公司。

    转行多年,这块技术并没有太多飞跃,依旧是那些内容,这个五六年前的工具程序仍然跑的飞溜,不如就拿出来贡献给大家用吧。于是乎起了这么个名.Net RuntimeExplorer,看这高端大气上档次的名字,就冲这名字也得好好整理一番。一个自用的小工具要变成个像样的软件,差距不小,等到真想做这件事的时候,还比想像中要远远远远太多。这让我一直在犹豫,倒底还要不要头发,最终还是决定不要,反正也快到那个年龄段了,趁着最近业余还有些时间,来完成梦想吧,写一个属于自己的软件。

    但是,现实总是残酷的,随遍去论坛逛逛就发现了dnSpy这个大牛团的作品,而且还是开源。第一个反应是英雄所见略同,第二个反应是悲哀,功能基本重叠,我有的人家也有,我没有的人家还有。大体上看了一下dnSpy那几万行代码,有够复杂,虽然大部分功能的实现原理是一样的,但还是有些许区别,仍然侧重于静态方面,而我更偏向于对动态和运行时的理解。还是继续做下去的吧,慢慢来。

    目前最大的难题是IL翻译成C#的问题,就算是抄也根本就找不到拿来就能用的库,IL我是可以阅读的,但用户们呢,我想是凤毛麟角吧,所以这是跳不过去的题目。就dnSpy的decompiler来说说,它倚仗于dnlib,都是dn一家人嘛,但我不太想使用dnlib,尽量不要引进这复杂的基因。当然还是找到方法解决了,为此我又牺牲了不少头发,想到了靠堆栈来析构的方法。有五个出口的循环嵌套你见过没?如果不写上明明白白的注释,我想一周后这段代码就会成为祖传的……

    岁月不饶人,从16位汇编到C,从QB到C#,直到PC端的落寞移动端的兴起,真的跟不上了,如果您有兴看到这里,友情提示,早死早托生,早转行早成功。这是一位半辈子业余码农的忠告哟!

posted @ 2019-10-08 14:24  ccddnet  阅读(221)  评论(0)    收藏  举报