前言:算是第一次正规的逆向了吧,该程序用vba语言编写,逆向其算法。怎么说呢,这个程序逆向了大概三天,这三天考了三门期末,本来对期末真没有以前那种热情,该水水就水水,考完回来继续分析这个程序,在这上面的时间三天至少花了20个小时,从一开始一脸蒙蔽一窍不通到基本逆向出其算法和vba函数的作用,可以说是值得的,下面就总结一下自己的收获:
一、逆向前的准备工作:
- 了解其是什么语言编写,然后去查该语言的逆向心得。比如,我这次是逆向 vba程序,其显著特点是一个变量占12个字节,前2个字节特征,后面4个字节才是真正的值。我刚开始晚上完全不懂,真的很蒙蔽,怎么弄怎么不对。第二天早上才有灵感一查才知道,还发现了前两个字节的特征,比如,是整数,则为0002,这是一定要吸取的教训。
二、逆向过程中的心得:
- 逆向的核心是搞懂函数作用+栈帧的分布:着重强调栈帧,这个可以说四个小时前我还一脸蒙蔽,睡觉前忽然才想起这个,真是,基础不牢,地动山摇啊。所有的局部变量都存储在栈帧中。我们之前着重分析函数,太多函数,各种寄存器绕的头晕,其实,寄存器只是一个中转站,最终还是存储在栈帧中,所以,我们弄清每一个栈帧具体表示的变量,之后看汇编代码会轻松很多。就算一个栈帧可能有多个情况,我们只需要在代码调用前查看其是哪种情况就好。
- 函数分析ÿ