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

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

作者: 欧皇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等软件跨进程处理

    相关文章

      网友评论

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

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