Randy's Notes

实习之路

前言

有那么一段时间没写博客了,发现自己真是喜欢挖坑不喜欢填。这段时间也算是人生一个大的转折点了,大学毕业,回家呆了一个星期,来深圳租房,实习,然后就是看书和学习各种软件逆向的知识,本来也想花点时间记录一下学习逆向的路程,但一到周末就各种玩和躺。由于明天要回校报道了,难得在今天交接工作之余记录一下从毕业到现在的生活。

北京 -> 湛江

毕业了,大家就这么散了。大家走的都是那么匆忙,甚至没有什么谢师宴和散伙饭,拍毕业照那天反倒是难得的齐聚一堂。在寄走了几箱专业书后我也拖着行李箱滚蛋了,不知道下一次“北工大西门”到了会是什么时候。回到家看着花了四年时间和几万块钱换来的毕业证书,心中真是五味杂陈。

回家见到了两三年没见的二弟,同时帮刚完成高考的三弟报了志愿,哎,咋就不能在学习这一点学学他们大哥呢?最后和几个高中要好的同学吃了顿夜宵,没等到通知书就跑来深圳了。

湛江 -> 深圳

为了早一两个小时到达深圳我居然把火车票退了换客车,坐了一夜我发现自己真是脑子被门夹了。到深圳后找到了前些天尚清同学在网上申请的免费的青年旅馆,按了半天门铃没有人,只能在风雨交加中到楼下的小花园呆了几个小时,直到开门后才发现里面有个哥们在睡觉,我真是!@#¥%……&*

尚清同学的飞机延误了好几个小时,于是我还能睡一觉再去机场接她。接下来这几天就是开始疯狂找房子啦~,由于要在百鸽笼附近实习,于是就想着在西丽和百鸽笼之间找,这样开学后也方便。见识过黑中介口中的“宜家风格”后终于在坂田附近住了下来,斯是陋室,惟吾德馨。深飘就开始了~

大梅沙

广东省 深圳市 盐田区 大梅沙

坂田 -> 百鸽笼

按着老师给的地址终于来到了实习的公司,这是一家网络安全公司,所以太详细的信息也就不便透露了。接下来就是一般的入职流程,配电脑,安排学习计划和任务之类的,而且老板还说过段时间会有两个广工的大三的同学过来实习,这让我感觉不是那么孤单了,于是就按着学习计划安安静静地学了起来。

逆向之旅

在开始逆向之前首先再次学习了<<汇编原理>>,之前也只是在学习组成原理的时候穿插着学了那么一点,这次算是巩固了,然后学习 C++ 逆向,对象在汇编中也不再那么神秘,最后学习 Android 逆向,学习 Smali 语法,学习静态分析和动态分析。

一开始在分析 Android 软件的时候,只会傻傻的插入 Smali 代码打印变量然后手动重编译打包签名安装,后来觉得太累了,就开始尝试着写脚本自动实现重编译打包签名安装,节省了很多时间然后把自己感动了一波。即使如此,对于寄存器的使用稍微一不注意就得重新改,然后重复脚本,直到师兄问我既然 Smali 语法那么恶心为什么不直接 hook 这些方法?

然后我就开始学习如何使用 xposed 来 hook 程序中的某个方法直接输出变量或者修改方法,学习 Java 的反射机制和 Android 的 multidex 机制。上手后我才发现这个方法也有很大的弊病啊,我每次修改代码就得重启手机,问师兄也说没有什么好的解决方法。后来我就自己查,然后找到了一个不是那么好的解决方法,意思是说把某些方法编译成一个单独的 dex 文件,然后在 hook 的时候去调用这些方法,实现热更新。当然这个方法我觉得也不够,还是需要经常重启手机才能对不同的方法进行 hook,但是这个思路很棒。后来终于在 github 上通过关键字找到了一个项目: hotposed,这个项目直接连 xposed 的方法都封装了,于是只需要重启一次手机后再也不用重启了:)。然而没有什么方法是一劳永逸的,对于 xposed,我可以对某个方法进行 hook 和 replace,我却没办法在该方法中间输出一些内容,于是在推荐下我又开始学习如何使用 Android Studio 进行 Smali 调试。

首先需要安装一个 Android Studio 的插件: smalidea 插件,然后打开 Smali 项目,添加远程调试和配置 SDK(否则无查看 SDK 中数据结构的值),学习如何 step into、step over 和 step out,如何通过下断点来查看当前堆栈的值,由于对应的代码又是 smali 代码所以有时候调试着就不知道跑到哪里去了。

搭配着上面三种方法最终也折腾出了注册和登陆功能的模拟,成功返回 session。这也多亏了我逆向的这个即时聊天 app 的开发人员,他们既不对代码进行混淆,核心代码也不加密,于是不用分析 so 库也能进行下去,还让我感到郁闷的是代码中明明有 https 双向认证的代码和证书,为什么最后却没用调用?由于即将开学,也只是了解了一些聊天部分的代码,发现其在聊天的时候使用了 whispersystems 的 signal 协议,这是一种端到端的加密协议,除了聊天的两个人,就连服务器都不知道用户的聊天内容,斯诺登还推荐过这个协议。后来顺便去看一下这个 app 如何保存用户数据,发现其在数据库文件中不但保存了用户名、密码、聊天记录的安全哈希和会话,还存了 signal 协议中的一些 key,不过应该是加密了。

深圳 -> 湛江

前几天正赶上刮台风回了一趟家,因为老爸老妈非得说要请亲朋好友吃一顿,庆祝一下。也不是想高调,又不是本科上清华。就是老爸老妈想乐呵乐呵,顺便我也能拿几个红包当生活费。这事由于我的原因弄得尚清同学挺不开心的,台风天把她自己一个人丢在这边,于是和我赌气,又是吃泡面又是喝汽水的,加上风吹雨淋,最后弄得自己胃疼了好几天,还好从家里带来了点生花生,让她吃了几天确实有点效果。红包挺多,生活终于又富裕点了。

结尾

这两天终于发了七月份的工资了,不多不少也有几千块,于是赶紧给自己买了一个 Magic Trackpad 2,因为我觉得它会让我用回我的 HHKB,就像我觉得我会填上博客中以前留下的坑一样╮(╯▽╰)╭。

明天就可以和尚清同学一起早起一起出发啦,想想还有点小激动呢~

疏影横斜水清浅,暗香浮动月黄昏