不负少年时——许昌学院信息工程学院“创出彩”信息安全与对抗技术集训实践队
许昌学院信息工程学院“创出彩”信息安全与对抗技术集训暑假社会实践团队成员们兴致高昂,对分享的内容都十分感兴趣,纷纷发表意见。队员们激情似火,有提问声,有解答声,也有争论声。在平时看来枯燥无味的编程代码在队员们手中像是一个有趣的游戏, 即便是单调的色彩和满屏无序排列的字母数字也乐在其中。
以下为许昌学院信息工程学院“创出彩”信息安全与对抗技术集训暑假社会实践团队成员分享内容:逆向分析文章主要描述的是黑客老鸟讲逆向分析以及对逆向分析技术的全揭秘,讲到逆向,更多的人都是考虑到既然是逆向那就应该反着来推或者相反,其实则不然,这里我们要讲的是为了更深入的研究windows编写机制,更好的研究他们的安全,谁让微软这么保守虽然曾经流出过windows的部分代码.....经过前几课的学习,我们现在开始正式开讲逆向分析。逆向分析技术是指通过分析反汇编代码来理解其代码功能,如各接口的数据结构等,然后用高级语言重新描述这段代码,逆向推出原软件的思路。下面从函数的调用、循环、控制语句等方面分析。
在高级语言中,子程序依懒于堆栈来传递参数。
例如test1(Par1,Par2,Par3:integer),按C,Psacal和StdCall的调用约定汇编代码如下:
函数调用
按StdCall约定调用函数test2(par1,par2),其堆栈建立情况如下:
Push ebp ;保护现场原先的EBP指针
Mov ebp,esp ;设置新的EBP指针,指向栈顶
Sub esp,xxx ;堆栈中留出点空间放局部变量
… …
Add esp,xxx ;释放局部变量占用的堆栈
Pop ebp ;恢复现场的ebp指针
Ret 8 ;返回
静态分析
静态分析:从反汇编出来的程序清单上分析程序流程,了解模块完成的功能。静态分析先分析程序的文件类型,如果程序使用加壳保护,则要先进行脱壳。通过静态分析工具加载程序进行分析。(例如IDA pro工具)动态分析逆向分析技术:动态跟踪调试程序,分为用户模式和内核模式两种类型。用户模式调试器是指用来调试用户模式的应用程序,工作在Ring 3级。
OD动态分析
调试中常用的快捷键:F2:设置断点,只要在光标定位的位置(上图中灰色条)按F2键即可,再按一次F2键则会删除断点。F8:单步步过。每按一次这个键执行一条反汇编窗口中的一条指令,遇到 CALL 等子程序不进入其代码。F7:单步步入。功能同单步步过(F8)类似,区别是遇到 CALL 等子程序时会进入其中,进入后首先会停留在子程序的第一条指令上。F4:运行到选定位置。作用就是直接运行到光标所在位置处暂停。F9:运行。按下这个键如果没有设置相应断点的话,被调试的程序将直接开始运行。CTR+F9:执行到返回。此命令在执行到一个 ret (返回指令)指令时暂停,常用于从系统领空返回到我们调试的程序领空。ALT+F9:执行到用户代码。可用于从系统领空快速返回到我们调试的程序领空。
结构化异常处理
结构化异常处理(Structured Exception Handling ,简称SEH)是Windows操作系统处理程序错误或异常的技术。两种类型的异常处理句柄:一种是final型的,这是在异常未能得到线程相关处理例程处理操作系统在即将关闭程序之前会回调的例程,这个例程是进程相关而不是线程相关的,因此无论是哪个线程发生异常未能被处理都会调用这个例程。另一种是per_Thread Exception Handler->线程相关的异常处理,通常每个线程初始化准备好运行时fs指向一个TIB结构 (THREAD INFORMATION BLOCK),这个结构的第一个元素fs:[0]指向一个_EXCEPTION_REGISTRATION结构 。当Windows检测到异常时,执行线程立即被中断 ,处理从用户模式转向了内核模式,控制权交给了异常调试程序,它负责查找处理新异常的方法。
供稿人:徐燕
http://www.dxsbao.com/shijian/90464.html 点此复制本页地址