精易论坛

标题: 汇编求助 [打印本页]

作者: 南瓜2021    时间: 2024-12-21 20:51
标题: 汇编求助
.版本 2
.支持库 spec

.子程序 解密人物名, 整数型
.参数 指针, 整数型
.局部变量 CALL地址, 整数型

dm.AsmClear ()
dm.AsmAdd (“mov edx, dword ptr [” + 十到十六 (指针) + “]”)
dm.AsmAdd (“lea ecx, [edx + 484]”)
dm.AsmAdd (“call 68A980”)
CALL地址 = dm.AsmCall (窗口句柄, 1)
返回 (CALL地址)
调试输出 (“CALL地址”, CALL地址)
求助大佬看看这写的有没有语法错误


作者: 揰掵佲    时间: 2024-12-21 21:30
语法没错 但是会崩 因为不允许直接 call 地址

补充内容 (2024-12-21 21:30):
不是说汇编不允许 而是大部分易语言的call代码都不太允许 除非处理过
作者: 南瓜2021    时间: 2024-12-21 21:42
揰掵佲 发表于 2024-12-21 21:30
语法没错 但是会崩 因为不允许直接 call 地址

补充内容 (2024-12-21 21:30):

崩倒是不蹦,解密出来的值是个cvdsvdsfds
作者: 南瓜2021    时间: 2024-12-21 21:43
揰掵佲 发表于 2024-12-21 21:30
语法没错 但是会崩 因为不允许直接 call 地址

补充内容 (2024-12-21 21:30):

CALL地址 = dm.AsmCall (窗口句柄, 6)  改成这样就崩了
作者: 恶魔の佐翼    时间: 2024-12-21 22:52
首先CALL地址的话是需要计算处理的,简单点的就是把地址给寄存器,然后CALL寄存器,其次就是RET,没返回肯定蹦,除非你做了处理,再一次就是你确定是窗口句柄不是进程句柄吗?
作者: 南瓜2021    时间: 2024-12-21 23:03
恶魔の佐翼 发表于 2024-12-21 22:52
首先CALL地址的话是需要计算处理的,简单点的就是把地址给寄存器,然后CALL寄存器,其次就是RET,没返回肯定蹦, ...

函数简介:

执行用AsmAdd加到缓冲中的指令.

函数原型:

LONGLONG AsmCall(hwnd,mode)

参数定义:

hwnd 整形数: 窗口句柄

是窗口句柄,现在都不蹦了 只是返回值不是想要的
作者: 南瓜2021    时间: 2024-12-21 23:03
南瓜2021 发表于 2024-12-21 23:03
函数简介:

执行用AsmAdd加到缓冲中的指令.

.版本 2
.支持库 spec

dm.AsmClear ()
dm.AsmAdd (“sub esp, 4”)
dm.AsmAdd (“mov ecx, dword ptr [” + 十到十六 (指针) + “]”)
dm.AsmAdd (“add ecx , 484”)
dm.AsmAdd (“call 0068A980”)
dm.AsmAdd (“add esp, 4”)
CALL地址 = dm.AsmCall (窗口句柄, 6)
调试输出 (dm.GetLastError ())

调试输出 (“CALL地址”, CALL地址)
返回 (CALL地址)

改成这样了




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4