windows逆向初级笔记前言

windows逆向初级之前言

期间在家里其实有用纸质的笔记本写笔记,尽量让笔记看起来不那么流水,笔记不用去记录既定事实或者公理,而应该去记录思考所得或者Question and Answer.,从这里开始学习windows逆向。

概要目录

  1. 函数,函数调用,函数约定,堆栈图
  2. 数据类型,整数、小数、字符等
  3. 数据类型,一个字节,两个字节,三个字节……short,int,long,char,float,double,结构,联合,枚举,位段
  4. 类型转换
  5. 指针~各种变态指针~指针类型转换
  6. 正向代码强化练习:
    内存读写训练:数组操作、多维数组操作、结构体操作
    编程逻辑训练:排序、查找
    数据结构训练:链表、二叉树
  7. C语言逆向:
    表达式
    流程控制:分支、循环、Switch
    数组逆向
    链表逆向
    二叉树逆向

汇编基础

  • 栈顶在低位地址向低地址扩展,栈底在高位地址,栈是一个书箱子,Last in first out/FILO
  • call 0x00401000 函数调用时的操作:
    • 把当前领空的下一条命令地址(=当前EIP地址加上当前指令长度)压入堆栈(函数执行完成以后的返回地址)
    • 栈顶指针ESP减4
    • 函数的返回结果可以放入寄存器或者某个内存中
  • 不同编译器(如VS2008,VS2012)对于局部变量空间大小设置不一样,sub ESP,40
  • STOS/MOVS,看D=0或D=1位以判断循环时+4还是-4
  • lea目标地址传送指令,只传送地址;mov传送的是地址所指向的值
push ebp # 保存ebp
move ebp,esp # 保存栈底,以提升栈顶为函数执行提供空间
sub esp,40 # 局部变量空间
push ebx
push esi
push edi # 保存现场入栈,ebx,esi,edi
lea edi,dword ptr ss:[ebp-40] # 局部变量低位地址给EDI
mov ecx,10 # 循环次数给计数寄存器
mov eax,0xCCCCCCCC # CC = INT3 硬编码中断
REP stos dword ptr es:[EDI] # 将EAX的值初始化到EDI所指向地址,循环ECX次
mov eax,dword ptr ss:[ebp+8] # call 函数的形参1
add eax,dword ptr ss:[ebp+c] # call 函数的形参2
pop edi
pop esi
pop ebx # 还原现场出栈
mov esp,ebp # 还原栈底指针
pop ebp # 出栈
retn # pop eip(函数执行完返回地址) 栈底自动加4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值