吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 284|回复: 9
收起左侧

[经验求助] 求这段汇编,该怎么用易语言写

[复制链接]
泪鱼无梦 发表于 2024-5-22 23:09
25吾爱币
[Asm] 纯文本查看 复制代码
00413BE4 6A 00 push 0  
00413BE6 50 push eax  
00413BE7 6A 3C push 3C  
00413BE9 57 push edi  
00413BEA 8BCE mov ecx,esi ecx:"爗f", esi:&"p咢" 
00413BEC E8 1F8FFFFF call <plantsvszombies(原版启动).sub_40CB10>  


最近在学游戏逆向,我想知道,这段代码用易语言怎么写,以及为什么我下面写的这段代码会让游戏崩溃
[Lua] 纯文本查看 复制代码
.版本 2
.支持库 spec

置汇编代码 ({  })
Pushad ()
Push (0)
Push (十六到十_ (“4”))
Push_EAX ()
Push (十六到十_ (“3c”))
Push (十六到十_ (“EC”))
Push_EDI ()
Mov_ECX (十六到十_ (“1733FB50”))
Call (十六到十_ (“0040CB10”))
Popad ()
ret ()
调试输出 (取汇编代码 ())
调用函数 (进程ID, 取汇编代码 ())

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

Su9ar 发表于 2024-5-22 23:15
.版本 2
.程序集 程序集1
.子程序 _启动子程序, 整数型, 公开
.局部变量 参数1, 整数型
.局部变量 参数2, 整数型
.局部变量 参数3, 整数型
.局部变量 参数4, 整数型

参数1 = 0
参数2 = 取变量值(eax)
参数3 = 60
参数4 = 取变量值(edi)


' 调用函数,传入参数
' plantsvszombies_启动(参数1, 参数2, 参数3, 参数4)

返回(0)
.子程序结束

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
ETH + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| 泪鱼无梦 发表于 2024-5-23 22:33
Su9ar 发表于 2024-5-22 23:15
.版本 2
.程序集 程序集1
.子程序 _启动子程序, 整数型, 公开

不是,哥,我的意思是想问,为什么我第二个代码块的易语言代码,会导致游戏崩溃,跟我第一个代码块中的汇编有什么区分么
小哲网络 发表于 2024-5-24 13:40
要找出上述汇编语言和易语言代码导致程序崩溃的原因,我们需要详细分析这段代码的每一步操作。以下是汇编语言和易语言代码的对比分析:
汇编代码分析
[Asm] 纯文本查看 复制代码
00413BE4 6A 00          push 0
00413BE6 50             push eax
00413BE7 6A 3C          push 3C
00413BE9 57             push edi
00413BEA 8BCE           mov ecx, esi  ; ecx = esi
00413BEC E8 1F8FFFFF    call <plantsvszombies(原版启动).sub_40CB10>

  • push 0 将0压入堆栈
  • push eax 将eax寄存器的值压入堆栈
  • push 3C 将0x3C压入堆栈
  • push edi 将edi寄存器的值压入堆栈
  • mov ecx, esi 把esi的值赋给ecx
  • call <plantsvszombies(原版启动).sub_40CB10> 调用子程序 <plantsvszombies(原版启动).sub_40CB10>

    易语言代码分析
    [Asm] 纯文本查看 复制代码
    .版本 2
    .支持库 spec
    
    置汇编代码 ({  })
    Pushad ()
    Push (0)
    Push (十六到十_ (“4”))
    Push_EAX ()
    Push (十六到十_ (“3c”))
    Push (十六到十_ (“EC”))
    Push_EDI ()
    Mov_ECX (十六到十_ (“1733FB50”))
    Call (十六到十_ (“0040CB10”))
    Popad ()
    ret ()
    调试输出 (取汇编代码 ())
    调用函数 (进程ID, 取汇编代码 ())
    
    注意到的错误
    • Push (十六到十_ (“4”)) 应该是 push eax,但是在易语言里转换了一个错误的值(应该是4字节而非字符“4”)。
    • Push (十六到十_ (“EC”)) 这里应该是push edi,但这个EC是否正确需要仔细检查。
    • Mov_ECX (十六到十_ (“1733FB50”)) 这里赋值不太对,应该是Mov_ECX_ESI,而不是硬编码的十六进制值。
    • 调用函数 (进程ID, 取汇编代码 ()) 这个调用函数可能存在问题,因为进程ID和函数调用的代码没被正确处理。
    修改后的易语言代码
    [Asm] 纯文本查看 复制代码
    .版本 2
    .支持库 spec
    
    置汇编代码 ({  })
    
    Pushad ()
    Push (0)
    Push_EAX ()
    Push (十六到十_ ("3C"))
    Push_EDI ()
    Mov_ECX_ESI ()  ; 修改为正确的寄存器赋值
    Call (十六到十_ ("0040CB10"))
    Popad ()
    ret ()
    
    调试输出 (取汇编代码 ())
    调用函数 (进程ID, 取汇编代码 ())
    
    可能崩溃的原因
    • 错误值的推入堆栈: 错误的值推入堆栈会导致函数调用时传入的参数不正确,从而引起崩溃。
    • 寄存器赋值错误: Mov_ECX (十六到十_ (“1733FB50”)) 这一行应该是 Mov_ECX_ESI (),错误的值可能会引起崩溃。
    • 函数调用处理不当: 易语言代码中,调用函数时进程ID和函数代码的传递可能不正确。
    总之,确保易语言代码中的每一步都精确地匹配汇编语言代码的意图,尤其要注意寄存器和堆栈操作的准确性。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
泪鱼无梦 + 1 + 1 热心回复!

查看全部评分

小哲网络 发表于 2024-5-24 13:43
我这边没得易语言环境,以上回复,自行确认是否能解决你的问题,若是不能,有报错,亦可把详细报错信息发上来。
Su9ar 发表于 2024-5-24 13:52
小哲网络 发表于 2024-5-24 13:40
要找出上述汇编语言和易语言代码导致程序崩溃的原因,我们需要详细分析这段代码的每一步操作。以下是汇编语 ...

瞎几把扯淡,十六到十的参数应该是文本型,易语言这种小众的软件没有足够的数据给AI训练的,gpt是不理解易语言的,所以别想着用AI来写易语言了。只能从逻辑上辅助一下。
小哲网络 发表于 2024-5-24 14:01
Su9ar 发表于 2024-5-24 13:52
瞎几把扯淡,十六到十的参数应该是文本型,易语言这种小众的软件没有足够的数据给AI训练的,gpt是不理解 ...

哦,易语言这块不懂,看大佬你没有再次给楼主回复,就想着用gpt回复试试,既然你都说有问题, 建议楼主不用试gpt给出的代码了,坐等大佬给你解答,如果他方便的话
Su9ar 发表于 2024-5-24 14:13
泪鱼无梦 发表于 2024-5-23 22:33
不是,哥,我的意思是想问,为什么我第二个代码块的易语言代码,会导致游戏崩溃,跟我第一个代码块中的汇 ...

你的call有几个参数

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
ETH + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| 泪鱼无梦 发表于 2024-5-25 20:38
Su9ar 发表于 2024-5-24 14:13
你的call有几个参数

我看着一共push 4个,然后内平栈 ret 10,我这几天可能找到了,是那个Mov_ECX_ESI这个地方可能有问题,取到的地址是000000
gchq2005 发表于 2024-5-25 21:03
先不说对错,汇编代码 5个 Push 你的易 6个Push 这能不崩溃  你这个  Push (十六到十_ (“4”))是什么意思
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-6-16 09:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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