今天学习了一点逆向入门的知识,做个笔记,防忘。
判断软件是否加壳
首先,要分析一个软件,第一步就是要判断软件是否加壳,PEiD就是一个侦壳工具,只要把PE文件拖进去即可。
那怎么判断有没有加壳呢?看分析出的结果,有以下几种常见的
- Microsoft Visual C++ 6.0
- Microsoft Visual Basic 5.0 / 6.0
- BC++
- Borland Delphi 6.0 - 7.0
- 易语言入口
- Microsoft Visual C++ 6.0 [Overlay] E语言
- MASM32 / TASM32入口
如果不是,那应该是加了壳的。
不过有一点要注意的:
易语言独立编译、静态编译的时候用的是C++接口,其它情况还是显示的E语言。
初识OD
然后认识了一下OllyDbg,四个区域。
左上角CPU窗口,分别是地址,机器码,汇编代码,注释。
右上角是寄存器窗口。
左下角是内存窗口,可以ascii或者unicode两种方式显示内存信息。
右下角的是当前堆栈情况,还有注释。
几个常用的快捷键
- F2:下断点
- F4:运行到所选行
- F7:单步进入
- F8:单步跟踪
- F9:执行程序(Shift+F9 忽略异常运行)
- F12:暂停
后面的字母(Alt+字母可跳转过去):e 模块 m 内存镜像 t线程 c返回 k调用栈 b断点
常用的汇编指令
今天认识了一些简单常用的汇编指令
test
,cmp
都是比较指令
mov a,b
// 把b值赋给a,使a=b
ret
,retn
//返回主程序
call
// 调用子程序
je
或jz
// 相等则跳(机器码是74或84)
jne
或jnz
// 不相等则跳(机器码是75或85)
jmp
// 无条件跳(机器码是EB)
pop xxx
// xxx出栈
push xxx
// xxx压栈