开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1319|回复: 1
收起左侧

[已解决] 求教call写法 我自己写的游戏直接崩溃 (应该是ESP 导致的)

 关闭 [复制链接]
结帖率:88% (23/26)
发表于 2016-8-3 15:25:10 | 显示全部楼层 |阅读模式   广东省中山市
50精币
004B06FE   .  8BF0          mov esi,eax                              ;  eax=00000003  购买数量
004B0700   .  85F6          test esi,esi
004B0702   .  75 0A         jnz short SO3D.004B070E
004B0704   .  E9 D3030000   jmp SO3D.004B0ADC
004B0709   >  BE 01000000   mov esi,0x1
004B070E   >  8BC6          mov eax,esi                              ;  esi=00000003  购买数量
004B0710   .  0FAFC5        imul eax,ebp                             ;  ebp=0000000A  计算总价
004B0713   .  3D A0860100   cmp eax,0x186A0                          ;  eax=0000001E
004B0718   .  7C 4A         jl short SO3D.004B0764                   ;  跳转已实现
004B071A   .  50            push eax
004B071B   .  8D8424 BC0000>lea eax,dword ptr ss:[esp+0xBC]
004B0722   .  50            push eax
004B0723   .  68 E8040000   push 0x4E8
004B0728   .  E8 93CD1100   call SO3D.005CD4C0
004B072D   .  D905 84BB7300 fld dword ptr ds:[0x73BB84]
004B0733   .  83C4 08       add esp,0x8
004B0736   .  D91C24        fstp dword ptr ss:[esp]
004B0739   .  6A 00         push 0x0
004B073B   .  6A 02         push 0x2
004B073D   .  8D8C24 C40000>lea ecx,dword ptr ss:[esp+0xC4]
004B0744   .  51            push ecx
004B0745   .  B9 E0941A01   mov ecx,SO3D.011A94E0
004B074A   .  E8 B13C0800   call SO3D.00534400
004B074F   .  84C0          test al,al
004B0751   .  75 11         jnz short SO3D.004B0764
004B0753   .  33C0          xor eax,eax
004B0755   .  A3 30621D01   mov dword ptr ds:[0x11D6230],eax
004B075A   .  A3 5CC11D01   mov dword ptr ds:[0x11DC15C],eax
004B075F   .  E9 78030000   jmp SO3D.004B0ADC                        ;  已跳过
004B0764   >  8B5424 20     mov edx,dword ptr ss:[esp+0x20]          ;  堆栈 ss:[0018F2D8]=0018F4E0
004B0768   .  56            push esi                                 ;  esi=00000003  数量
004B0769   .  52            push edx                                 ;  edx=0018F4E0
004B076A   .  E8 716A1200   call SO3D.005D71E0
004B076F   .  53            push ebx                                 ;  ebx=00000009
004B0770   .  50            push eax                                 ;  eax=0018F4E4
004B0771   .  E8 6A6A1200   call SO3D.005D71E0
004B0776   .- E9 ABD45001   jmp SO3D.019BDC26
004B077B      90            nop
004B077C      90            nop
004B077D   .  52            push edx                                 ;  已跳过
004B077E   .  50            push eax                                 ;  已跳过
004B077F   .  E8 5C6A1200   call SO3D.005D71E0
004B0784   .  8B0D A0601D01 mov ecx,dword ptr ds:[0x11D60A0]         ;  ds:[011D60A0]=3771D9F0
004B078A   .  83C4 18       add esp,0x18                             ;  esp=0018F2A0
004B078D   .  6A 14         push 0x14
004B078F   .  8D8424 240200>lea eax,dword ptr ss:[esp+0x224]         ;  堆栈地址=0018F4D8
004B0796   .  50            push eax                                 ;  eax=0018F4D8
004B0797   .  68 8C450600   push 0x6458C
004B079C   .  C605 131C7C00>mov byte ptr ds:[0x7C1C13],0x0           ;  ds:[007C1C13]=01
004B07A3   .  E8 38AC1200   call SO3D.005DB3E0                       ;  买物4

下面的是 上面那个jmp跳转过来的  (004B0776  E9 ABD45001  jmp SO3D.019BDC26)

019BDC26    8B4C24 24       mov ecx,dword ptr ss:[esp+0x24]          ; 堆栈 ss:[0018F2CC]=038DAF28
019BDC2A    8B51 20         mov edx,dword ptr ds:[ecx+0x20]          ; ds:[038DAF48]=000084D5
019BDC2D    83FA 00         cmp edx,0x0
019BDC30    7F 05           jg short SO3D.019BDC37                   ; 跳转已实现
019BDC32    BA FEFFFFFF     mov edx,-0x2
019BDC37    52              push edx                                 ; edx=000084D5
019BDC38    50              push eax                                 ; eax=0018F4E8
019BDC39  - E9 412BAFFE     jmp SO3D.004B077F

这是我自己写的 游戏直接崩溃
mov eax,3
mov esi,eax
mov eax,dword ptr ds:[0x11D6230]
mov edx,dword ptr ds:[eax+0x8]
imul edx,edx,0x178
mov ecx,dword ptr ds:[0x7DA400]
mov eax,dword ptr ds:[ecx+0x1B54]
imul eax,ebp
mov ebp,esp
mov esp,0018F2B8
mov edx,dword ptr ss:[esp+0x20]
push esi
push edx
call 005D71E0
push ebx
push eax
call 005D71E0
mov edx,0x000084D5
mov eax,0x0018F4E8
call 005D71E0
mov ecx,dword ptr ds:[0x11D60A0]
add esp,0x18
push 0x14
lea eax,dword ptr ss:[esp+0x224]
push eax
push 0x6458C
mov byte ptr ds:[0x7C1C13],0x0
call 005DB3E0
mov esp,ebp
pop ebp
ret

大神指点下这个call该如何写 (esp该如何处理)
这是一个购买物品的call (确认数量call)         (1 先选择物品类型  2 确认购买数量)

最佳答案

查看完整内容

这个是堆栈不平衡导致的,加我392076936

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
头像被屏蔽
结帖率:0% (0/2)
发表于 2016-8-3 15:25:11 | 显示全部楼层   河南省信阳市
这个是堆栈不平衡导致的,加我392076936
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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