天书笔记(1)---逆向C基础
来源:互联网 发布:张国荣好看吗 知乎 编辑:程序博客网 时间:2024/04/28 07:49
还有两个星期去学校了,在剩下的几天时间边玩边看书,争取能把天书夜读给看完吧,有点逆向跟驱动基础,希望可以完成任务。CSDN上做做笔记,会的也当复习下。
1.VS编译器查看反汇编代码:F9下断,F5调试程序,“调试”--“窗口”--“反汇编”或是直接ALT+8
2.
mov ecx,30hmov eax,0CCCCCCCChrep stos dword ptr es:[edi]
stos是串存储指令,功能是将eax中得数据放入edi所指的地址中。同时edi增加4字节,rep重复执行ecx中填写的次数
stos对应的是stosd,其他的还有stosb,stosw,分别对应处理4、1、2个字节,这里是对对堆栈中30h*4(0c0h)个字节初始化为0CCh,也就是int 3指令,这样发生意外时执行堆栈里面的内容会引发调试中断。vc debug版本特有的操作
3.反汇编指令的还原方法
第一步:把指令分为几类,并实际的把它们区分开
首先是函数调用相关代码,这些代码用于调用函数或者作为一个函数被调用。几乎凡是堆栈操作(备份寄存器或者压入参数)可全部归入此类。此外还有CALL指令、堆栈恢复,这类代码很容易识别,,把它们标识为F,成为F指令。
然后是流程控制代码,设计判断和跳转指令,以级对循环变量操作的指令。这些应用于循环、判断语句,比较容易看出,标记为C,C指令。
剩余的是数据处理,应该不含有函数调用,多半不含有堆栈操作,也不会含有跳转。对于复杂的数据处理代码,只能逐横翻译,然后多行组合,标记为D,D指令
第二步:取出其中标记为D的代码进行逐行翻译。首先标记为F的语句基本不需要翻译,它们本身就是简单的函数调用,其次标记为C的指令,将它们翻译为IF,for、do、或者switch。
第三步:表达式的合并与控制流程的结合。
- 天书笔记(1)---逆向C基础
- 天书夜读-1,笔记
- c语言逆向基础
- 逆向基础笔记
- Android逆向基础笔记—初识逆向
- Android逆向基础笔记—初识逆向
- C#/.NET基础逆向简述
- android逆向学习,笔记(四)ARM汇编基础
- 171122 逆向-ARM汇编基础(1)
- 天书笔记(2)---使用C++开发内核程序
- c&c++反汇编与逆向分析学习笔记(1)--调试工具OllyDBG
- 逆向笔记之汇编(1)
- 逆向QBasic7.1笔记
- 逆向笔记<1>
- C基础笔记1
- 天书夜读 第一章笔记
- 天书---碎片1
- 学习笔记:C程序基础(1)
- mini2440 gdb远程调试
- lucene3 分词器的使用
- A generic error occurred in GDI+. 解决方法
- Field in data file exceeds maximum length
- asp.net C# 验证控件常用的正则表达式
- 天书笔记(1)---逆向C基础
- oracle 修改表名
- HBITMAP、CBitmap与BITMAP的区别与联系及转换
- poj 1979Red and Black(BFS DFS)
- flex的取整(取数)数学运算实例
- Apache Rewrite 规则
- Installing Joomla! With XAMPP
- 异步IO java中非阻塞IO
- 《Star Schema The Complete Reference》 读书笔记(2)