首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >__userpurge调用(IDA)

__userpurge调用(IDA)
EN

Stack Overflow用户
提问于 2013-12-27 19:46:36
回答 1查看 1.6K关注 0票数 1

我试图从另一个dll调用一个函数,知道她的确切地址和参数。

在开发协会:

代码语言:javascript
复制
int __userpurge  sub_104CC1A0<eax>(int a1<ecx>, double a2<st0>, int a3)

我在stackoverflow.com上找到了类似的答案,但我得到了错误:

代码语言:javascript
复制
struct typechat
{
    unsigned int a;
    unsigned int b;
    unsigned int type; 
};

typechat * point;   
DWORD callAddress = 0x4CC1A0 + baseaddr;

    __declspec(naked) int SendMsg(char * text, double time, typechat * a3)
    {
            __asm{
                push ebp
                mov ebp, esp
                push ebx
                push a3
                mov st0, time // error C2415: invalid operand type
                mov ecx, text
                call[callAddress]
                pop ebx
                leave
                ret
        }
    }

error C2415:无效操作数类型

代码语言:javascript
复制
switch ( *(_DWORD *)(a3 + 8) )//chat type ,[code from IDA]
{


}

更新:

代码语言:javascript
复制
_
//int __userpurge  sub_104CC1A0<eax>(int a1<ecx>, double a2<st0>, int a3)

declspec(naked) int SendMsg(char * text, double nTime, typechat * nType)
{
    __asm{
            push ebp
            mov ebp, esp
            push nType
            fld nTime
            push ecx
            mov ecx, text
            move eax, [callAddress]
                call eax
            pop ecx
            leave
            ret
    }

}

此函数也不工作!:(不称为callAddress)

EN

回答 1

Stack Overflow用户

发布于 2013-12-27 20:41:53

AFAIK,您不能MOV一个值进入ST0寄存器,您必须使用FLD代替,例如:

代码语言:javascript
复制
fld time
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20806865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档