npointer-qual

Null Pointer第一次RE公开赛

关键词: windows逆向, 混淆, 32/64位切换

外层

不断的在代码中插入数据,多次call加上esp + 8实现跳转。并且在函数中嵌入小函数阻挡IDA创建函数。

原题+patch完的文件+idb

只好一点一点patch完成还原:

过程中发现两个函数:

获取Windbg的环境变量实现反调试。

把自身的一段代码载入并执行。

内层

这部分就是载入的代码了,坑点在于32位代码和64位代码都有,通过设置cs寄存器完成状态切换。怀疑出题人也做到原题了,然后实现了一个又一个跳转,从32开始验证,32 -> 64 -> 32 -> 64 ...最后到达结束分支返回1通过验证。