美文网首页
堆栈传参和堆栈平衡、外挂

堆栈传参和堆栈平衡、外挂

作者: 欧皇ff | 来源:发表于2020-04-05 10:38 被阅读0次

堆栈传参

当函数需要同时处理多个参数,需要使用堆栈传参满足需求。
例如:同时求5个数的和?

PUSH 1
PUSH 2
PUSH 3
PUSH 4
PUSH 5
CALL 0x00

MOV EAX,DWORD PTR DS:[ESP+0x14]
MOV EAX,DWORD PTR DS:[ESP+0x10]
MOV EAX,DWORD PTR DS:[ESP+0xC]
MOV EAX,DWORD PTR DS:[ESP+8]
MOV EAX,DWORD PTR DS:[ESP+4]
RETN
入栈参数
执行结果

堆栈平衡

  1. 如果要返回父程序,则当我们在堆栈中进行堆栈操作的时候,一定要保证在ret这条指令之前,ESP指向的是我们压入堆栈的指令。
  2. 如果通过堆栈传递参数了,那么在函数执行完毕后,需要平衡参数导致的堆栈变化。
push 1
push 2
call 0x00xxxxxx
add esp,8 //外平栈
//函数内栈平衡
mov eax, dword ptr ds:[dsp+8]
add eax, dword ptr ds:[dsp+4]
ret
外平栈
push 1
push 2
call 0x00xxxxxx

//函数内栈平衡
mov eax, dword ptr ds:[dsp+8]
add eax, dword ptr ds:[dsp+4]
ret 8 //内平栈
内平栈

外挂思路

  • 修改内存

直接修改内存中参数的值

  • 跨进程函数调用

自己实现第三方应用跨进程函数调用
使用CE等软件跨进程处理

相关文章

  • 堆栈传参和堆栈平衡、外挂

    堆栈传参 当函数需要同时处理多个参数,需要使用堆栈传参满足需求。例如:同时求5个数的和? 堆栈平衡 如果要返回父程...

  • 8. 汇编-ESP寻址 EBP寻址

    8. 汇编-ESP寻址 EBP寻址 寄存器传参和堆栈传参 寄存器传参 堆栈传参 --ESP寻址 堆栈传参 --EBP寻址

  • x86基础实验-进制转换(堆栈实现)

    简介 通过堆栈传参的方式实现进制转换 程序运行结果 代码

  • Windows堆栈

    Windows堆栈特点 * 先进后出 * 向低地址扩展 什么是堆栈平衡(重点) Windows中的堆栈。我一块普通...

  • Go 堆栈的理解

    在讲Go的堆栈之前,先温习一下堆栈基础知识。 什么是堆栈?在计算机中堆栈的概念分为:数据结构的堆栈和内存分配中堆栈...

  • 初识堆栈

    什么是堆栈 引出堆栈 在学习堆栈之前,我们需要从之前寄存器和内存中引出堆栈,我们要思考堆栈有什么必要性?现在假设我...

  • Linux内核——用户堆栈和内核堆栈

    定义 每个进程都有用户堆栈和内核堆栈两个堆栈。进程在用户态时使用用户堆栈,陷入到内核态时便使用内核堆栈。 切换过程...

  • 32位和64位函数调用顺序

    32位 栈图左边为无堆栈平衡,右边为堆栈平衡 对于pop3次选用的寄存器不知道是否固定,有些题目不会采用eax,e...

  • 在Python中实现两个堆栈的队列

    在Python中实现两个堆栈的队列。数据结构了解堆栈和队列。然后用两个堆栈实现一个队列。堆栈和队列都是列表。但它们...

  • ARM栈结构

    ARM 栈类型 根据栈生长方向,ARM的栈可分为递增堆栈和递减堆栈。 递增堆栈:栈向高地址生长 递减堆栈:栈向低地...

网友评论

      本文标题:堆栈传参和堆栈平衡、外挂

      本文链接:https://www.haomeiwen.com/subject/dnejphtx.html