天书笔记(1)---逆向C基础

 

 还有两个星期去学校了,在剩下的几天时间边玩边看书,争取能把天书夜读给看完吧,有点逆向跟驱动基础,希望可以完成任务。CSDN上做做笔记,会的也当复习下。

1.VS编译器查看反汇编代码:F9下断,F5调试程序,“调试”--“窗口”--“反汇编”或是直接ALT+8

2.

mov ecx,30h
mov eax,0CCCCCCCCh
rep  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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值