设为首页收藏本站

琵琶行论坛

 找回密码
 注册
查看: 469|回复: 12

[求助] Mame Debugger 是否支持函数调用堆栈窗口

[复制链接]

该用户从未签到

发表于 2018-5-24 14:32:45 | 显示全部楼层 |阅读模式
本帖最后由 btbt9527 于 2018-5-25 06:59 编辑

请问Mame Debugger 支持显示函数调用栈么?
我在调试97草薙的鬼燃烧。我想看具体的在鬼燃烧里面他们做了什么。

结果调着调着我就懵了。。。。。。。

该用户从未签到

 楼主| 发表于 2018-5-25 02:17:06 | 显示全部楼层
本帖最后由 btbt9527 于 2018-5-25 02:31 编辑
小白的问一句这是在分析游戏数据结构吗?

我是在试图逆向分析游戏人物的招数(Move)。
首先周壑的BiliBili视频是非常好的,他试图从宏观上逆向游戏。
想改游戏的都应该去看看,强烈推荐。
他的做法非常正规,IDA反汇编,Mame调试,IDA加注释。
而且从他的解说里面可以听出他是科班出身,有操作系统知识。
但是他分析的是游戏框架,没有分析具体招数(Move)。


我在试图用同样的流程分析具体招数(Move)
一个招数(Move)由 (>=1)个动作(Action(s)) 构成。
比如升龙由2->3个Actions构成。
站立(Idle)则由一个Action构成。

招数又分两种,一种是简单的,比如站轻拳,直接可以由策划编辑器搞定,就是我们在P2里面看到的那种,
就是6字节Action组
还有一种就是相对复杂,带运动轨迹的,策划只能在编辑器里面搞定一部分。(动画以及判定框+部分偏移)
而运动轨迹则需要额外的程序支持,比如升龙。
P2的6字节Action组是没有办法搞定的。(里面只有一个横向偏移)

所以如果你要分析具体草薙升龙的运动轨迹,就一定要读它的源代码。
我在分析升龙的时候遇到了两个困难。
1.我的IDA反汇编部分失败,好多代码无法显示,包括升龙,我没有办法加注释。
2.具体跟踪的时候,升龙的代码有很多嵌套子调用,但是mame debugger不显示函数调用栈,(可能不支持,可能我没有找到)

那代码看的我想哭.


点评

送份资料给你,查看论坛消息.  发表于 2018-5-25 11:39
回复 支持 1 反对 0

使用道具 举报

签到天数: 1 天

[LV.1]初来乍到

发表于 2018-5-24 16:36:44 | 显示全部楼层
B站有视频不知道对你有没有参考价值.
https://www.bilibili.com/video/av8613592
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2018-5-25 00:07:19 | 显示全部楼层
我就是按照他的方法做的。
实际上从头到尾你看不见函数栈。
只能看到当前位置。

而且我最搞不懂的就是,他的IDA反汇编全部都是正确的。
我的IDA反汇编只有一部分正确50,其余都是分析失败,
导致我没有办法加注释。
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2018-5-25 00:51:30 | 显示全部楼层
我要的是类似这个东西的东西,CallStack, 函数调用栈窗口。
好让我知道我现在所在的函数是被什么函数调用的。。。。
callStack.PNG

97草薙升龙里面有好几个子函数,每个子函数里面又有子子函数,每个子子函数里面又有子子子函数。。。。
跟着跟着我就迷失了。。。。。。

点评

小白的问一句这是在分析游戏数据结构吗?  发表于 2018-5-25 01:48
回复 支持 反对

使用道具 举报

签到天数: 1 天

[LV.1]初来乍到

发表于 2018-5-25 01:41:09 | 显示全部楼层
本帖最后由 sert 于 2018-5-25 01:49 编辑
btbt9527 发表于 2018-5-25 00:51
我要的是类似这个东西的东西,CallStack, 函数调用栈窗口。
好让我知道我现在所在的函数是被什么函数调用 ...

你还是弄个QQ吧,HACK区已经不如从前那么火,建议跟贴申请加入"ru1061"QQ群,他是游聚修改游戏大神,那边人多或许会有与你一样程序员在.现在路过这里的高人很少.
http://x.ppxclub.com/home.php?mod=space&username=ru1061

回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2018-5-25 19:09:54 | 显示全部楼层
‘’函数调用栈窗口‘’是什么鬼,第一次听说。
一个mamedebug够用了
用啥ida
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2018-5-26 10:44:51 | 显示全部楼层
内存窗口里查 A7 寄存器指向的地址, 就是堆栈顶, 正常调用都是4个字节的返回地址, 中断调用是6个字节, 跟过去看返回地址就知道是从哪调用进来的了
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2018-5-26 11:34:31 | 显示全部楼层
本帖最后由 btbt9527 于 2018-5-26 11:45 编辑

楼上这位兄台是明白人!
我知道A7是堆栈寄存器。但是那个要自己手动算。
我想知道的是,有没有类似VSStudio那种,点一下就可以来回跳的那种图形界面。。。

不过我估计是没有了。只是想确认一下。
这样效率太低了。。。
回复 支持 反对

使用道具 举报

签到天数: 4 天

[LV.2]偶尔看看I

发表于 2018-7-9 23:20:08 | 显示全部楼层
回复 支持 反对

使用道具 举报

签到天数: 4 天

[LV.2]偶尔看看I

发表于 2018-7-13 00:53:48 | 显示全部楼层
谢谢分享
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|琵琶行论坛 ( 赣ICP备12000882号  

GMT+8, 2018-8-15 15:00 , Processed in 0.068568 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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