吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1017|回复: 2
收起左侧

[讨论] VC6 内嵌汇编,怎么动态修改常量??

[复制链接]
xuson 发表于 2020-7-30 19:31
本帖最后由 xuson 于 2020-7-30 19:34 编辑

由于游戏版本不同导致基址不一,我已经找其它版本的基址信息,现在想多版本支持,却不知道怎么动态修改下面那些红色标记的常量
024329CCh
02F53190h
01EBA270h
01E8708Ch

01DB96E0h
01D40B50h
01DB96E0h
[C++] 纯文本查看 复制代码
//===================================================================================================
NAKED void EV_SetTraceHull(int hull)
{
    __asm
    {
        MOV ECX,DWORD PTR DS:[024329CCh]           ; hl.02D5FE20
        MOV EAX,DWORD PTR SS:[ESP+04h]
        MOV DWORD PTR DS:[ECX+0BCh],EAX
        RETN
    }
}
//===================================================================================================
NAKED model_s* GetModelByIndex(int index)
{
    __asm
    {
        SUB ESP,10h
        PUSH ESI
        PUSH EDI
        MOV EDI,DWORD PTR SS:[ESP+1Ch]
        MOV ESI,DWORD PTR DS:[EDI*04h+02F53190h]
        TEST ESI,ESI
        JNZ label_01
        POP EDI
        XOR EAX,EAX
        POP ESI
        ADD ESP,10h
        RETN

        label_01:

        MOV EAX,DWORD PTR DS:[ESI+40h]
        CMP EAX,01h
        JE label_02
        CMP EAX,02h
        JNZ label_03

        label_02:

        FLD DWORD PTR DS:[01EBA270h]
        FCOMP DWORD PTR DS:[01E8708Ch]
        FSTSW AX
        TEST AH,44h
        JPO label_04
        MOV EAX,01DB96E0h
        CALL EAX
        FSTP QWORD PTR SS:[ESP+10h]
        PUSH 00h
        PUSH 00h
        PUSH ESI
        MOV EAX,01D40B50h
        CALL EAX
        MOV EAX,01DB96E0h
        CALL EAX
        FSTP QWORD PTR SS:[ESP+14h]
        FLD QWORD PTR SS:[ESP+14h]
        FSUB QWORD PTR SS:[ESP+1Ch]
        ADD ESP,04h
        FSTP DWORD PTR SS:[ESP+24h]
        FLD DWORD PTR SS:[ESP+24h]
        FSTP QWORD PTR SS:[ESP]
        PUSH ESI
        PUSH 01EBC26Ch                         ; ASCII "fs_precache_timings: loaded model %s in time %.3f sec"
        MOV EAX,01D2F960h      
        CALL EAX
        MOV EAX,DWORD PTR DS:[EDI*04h+02F53190h]
        ADD ESP,10h
        POP EDI
        POP ESI
        ADD ESP,10h
        RETN

        label_04:

        PUSH 00h
        PUSH 00h
        PUSH ESI
        MOV EAX,01D40B50h
        CALL EAX
        ADD ESP,0Ch

        label_03:

        MOV EAX,DWORD PTR DS:[EDI*04h+02F53190h]
        POP EDI
        POP ESI
        ADD ESP,10h
        RETN
    }
}

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

罗萨 发表于 2020-7-30 19:54
可以先把常量指向的数据写到其他地址,在把这个地址写入代码
 楼主| xuson 发表于 2020-7-30 21:09
罗萨 发表于 2020-7-30 19:54
可以先把常量指向的数据写到其他地址,在把这个地址写入代码

不是很懂,能举个例子么?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-26 13:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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