我的汇编功能两次推送数据

时间:2016-03-13 15:51:59

标签: c++ assembly x86 inline-assembly

所以我一直在调试这个并且发送了一个将数据包发送到服务器的功能

这是函数

Naked void CB::Send_To_Server(CHARARRAY Buffer, int Length)
{
    __asm
    {    
            PUSH ESI
            LEA EAX, Length
            MOVZX ECX, DWORD PTR DS : [Buffer]
            PUSH ECX
            PUSH EAX
            MOV ECX, NetworkClass
            CALL Send_Packet_Original_Address
            POP ESI
            RET

    }
}

这里的问题首先是我调试我的应用程序时显示的问题 该函数有3个参数而不是2个(缓冲区,长度,长度)和 当我使用它时,它实际上是第一次推动两次长度 正确的长度第二次它是一些奇怪的负长数字 -29470056< ----不是一个给我看一个例子的值

所以你可能会发现我对c ++和asm都很糟糕,所以如果有人有 关于如何解决这个问题的想法或者说这很正常我会很感激你的帮助:)

1 个答案:

答案 0 :(得分:3)

为了在名称slug中引用参数,必须在函数入口处设置为EBP的值,如果函数未声明为裸,则自动完成。