吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1020|回复: 3
收起左侧

[求助] VS内联汇编调用call求助

[复制链接]
blbljj008 发表于 2023-4-11 17:28
这是OD反汇编中的两处代码,他们是两个call

汇编代码
0043032B   FF15 30157E00               call dword ptr ds:[<&WINMM.timeGetTime>]

VS2017中,这么写肯定是不行的,我要怎么写
//汇编调用游戏内部call的统一接口
UINT_PTR _cdecl asmCalltimeGetTime()
{
        UINT_PTR retvar = 0;
        __asm
        {
                call dword ptr ds:[<&WINMM.timeGetTime>]
                mov retvar, eax
        }
        return retvar;
}

汇编代码
0040EB95   E8 F66C1C00                 call <jmp.&WINMM.timeGetTime>

UINT_PTR _cdecl asmCalltimeGetTime()
{
        UINT_PTR retvar = 0;
        __asm
        {
                call <jmp.&WINMM.timeGetTime>
                mov retvar, eax
        }
        return retvar;
}

我该怎么写?
第一个call好像查阅了一些资料,估计能搞定,
获得模块地址,再获得函数地址,调用,
是这么回事吗?

第二个怎么弄,各位帮忙!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| blbljj008 发表于 2023-4-11 18:26
经测试,第一个call,一下代码均可用

void CPAGE00::OnBnClickedButton57()
{
        DWORD tmp, addr;

        tmp = timeGetTime();
        printf("VS    timeGetTime  %08X\n", tmp);
        _asm
        {
                call timeGetTime
                mov tmp, eax
        }
        printf("asm   timeGetTime  %08X\n", tmp);

        addr = (UINT32)timeGetTime;
        _asm
        {
                call addr
                mov tmp, eax
        }
        printf("asm2  timeGetTime  %08X\n", tmp);
        printf("timeGetTime addr  = %08X\n", addr);

        //LoadLibraryA("WINMM.dll");
        HMODULE hmd = GetModuleHandleW(L"WINMM.dll");
        ULONG addr2 = (ULONG)GetProcAddress(hmd, "timeGetTime");
        _asm
        {
                call addr2
                mov tmp, eax
        }
        printf("asm2  timeGetTime  %08X\n", tmp);
        printf("timeGetTime addr2 = %08X\n", addr2);
}
啊树 发表于 2023-4-11 18:32
66666666666666666

免费评分

参与人数 1违规 +1 收起 理由
Hmily + 1 请勿灌水,提高回帖质量是每位会员应尽的义务!

查看全部评分

 楼主| blbljj008 发表于 2023-4-11 19:18
本帖最后由 blbljj008 于 2023-4-11 19:21 编辑

研究一天原来第二种和第一种是一个意思,两种写法,了解的大神,给讲讲区别,我看是一样的,没有跟我遇到一样问题的吗?就是直接call,和call跳一下,是什么意思,有什么不一样
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 00:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表