如何找到游戏中的lua cpcallall

还没有帐号? 赶紧
用户名:&&密码:登录注册
luacall 参数无法找到 求帮助
UID:79326
在线时间114小时
金钱518威望451贡献值0社区警告0诚信值0账号服务0热心值1
本帖被 liyimiao 从 ::::快速答疑::::【悬赏】 移动到本区()
0066BFCF&& & \53&&&&&&&&&&&&push&&&&ebx&&&&&&&&&&&&&&&&&&&&&& //lua语句&0066BFD0&& .&&8BCE&&&&&&&&&&mov&&&& ecx, esi&&&&&&&&&&&&&&//该参数无法找到 返回后就 GUI模块了&0066BFD2&& .&&E8 59FDFFFF&& call&&&&0066BD30& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&求大神帮助
UID:77984
在线时间207小时
金钱1875威望5217贡献值80社区警告0诚信值0账号服务0热心值5
这什么信息都没看到呢
UID:82076
在线时间220小时
金钱302威望498贡献值0社区警告0诚信值0账号服务0热心值7
和判断某些窗口是否出现的数据(例如验证窗口,对话框窗口,其数据格式:[[[[基址]+0]+c]+64])差不多,只是基址和某些偏移不一样。&基址,查表,C,68
UID:79326
在线时间114小时
金钱518威望451贡献值0社区警告0诚信值0账号服务0热心值1
回 流浪的猪 的帖子
:和判断某些窗口是否出现的数据(例如验证窗口,对话框窗口,其数据格式:[[[[基址]+0]+c]+64])差不多,只是基址和某些偏移不一样。&基址,查表,C,68&( 21:31)&&&拦截下来 每条数据都不一样 没头绪
UID:82076
在线时间220小时
金钱302威望498贡献值0社区警告0诚信值0账号服务0热心值7
本层函数向上找esi:&0066BEC7 - 8b f1&&&&&&&&&&&&&&&&&&&&&&- mov esi,ecx&下断点返回上一层:&0066B4BA - 8b ce&&&&&&&&&&&&&&&&&&&&&&- mov ecx,esi&0066B4BC - ff 52 0c&&&&&&&&&&&&&&&&&& - call dword ptr [edx+0c]&0066B4BF - 8b 4d fc&&&&&&&&&&&&&&&&&& - mov ecx,[ebp-04]&&& - 33 cd&&&&&&&&&&&&&&&&&&&&&&- xor ecx,ebp&向上找esi:& - 8b f1&&&&&&&&&&&&&&&&&&&&&&- mov esi,ecx&再返回上一层:&02F50F9E - 8b 4b 68&&&&&&&&&&&&&&&&&& - mov ecx,[ebx+68]------注意&02F50FA1 - 8b 01&&&&&&&&&&&&&&&&&&&&&&- mov eax,[ecx]&02F50FA3 - 83 c4 20&&&&&&&&&&&&&&&&&& - add esp,20&02F50FA6 - 8d 95 e8 fd ff ff&&&&&&&&&&- lea edx,[ebp-]&02F50FAC - 52&&&&&&&&&&&&&&&&&&&&&&&& - push edx&02F50FAD - 8d 95 ec fe ff ff&&&&&&&&&&- lea edx,[ebp-]&02F50FB3 - 52&&&&&&&&&&&&&&&&&&&&&&&& - push edx&02F50FB4 - ff 50 08&&&&&&&&&&&&&&&&&& - call dword ptr [eax+08]&02F50FB7 - 5b&&&&&&&&&&&&&&&&&&&&&&&& - pop ebx&&&02F50FB8 - 8b 4d f4&&&&&&&&&&&&&&&&&& - mov ecx,[ebp-0c]&向上找ebx:&02F50F5C - 8b 9d dc fc ff ff&&&&&&&&&&- mov ebx,[ebp-]&向上找[ebp-]:&02F50E6C - 8b 7d 0c&&&&&&&&&&&&&&&&&& - mov edi,[ebp+0c]&02F50E6F - 89 45 f0&&&&&&&&&&&&&&&&&& - mov [ebp-10],eax&02F50E72 - 89 b5 e0 fc ff ff&&&&&&&&&&- mov [ebp-],esi&02F50E78 - 89 bd dc fc ff ff&&&&&&&&&&- mov [ebp-],edi&再返回上一层:&0068882D - 8b 47 10&&&&&&&&&&&&&&&&&& - mov eax,[edi+10]& - 8b 30&&&&&&&&&&&&&&&&&&&&&&- mov esi,[eax]& - 3b f0&&&&&&&&&&&&&&&&&&&&&&- cmp esi,eax& - 74 15&&&&&&&&&&&&&&&&&&&&&&- je 0068884b& - 8b 46 08&&&&&&&&&&&&&&&&&& - mov eax,[esi+08]& - 85 c0&&&&&&&&&&&&&&&&&&&&&&- test eax,eax&0068883B - 74 07&&&&&&&&&&&&&&&&&&&&&&- je &0068883D - 8b 4e 0c&&&&&&&&&&&&&&&&&& - mov ecx,[esi+0c]------注意& - 51&&&&&&&&&&&&&&&&&&&&&&&& - push ecx& - 53&&&&&&&&&&&&&&&&&&&&&&&& - push ebx& - ff d0&&&&&&&&&&&&&&&&&&&&&&- call eax& - 8b 36&&&&&&&&&&&&&&&&&&&&&&- mov esi,[esi]&&& - 3b 77 10&&&&&&&&&&&&&&&&&& - cmp esi,[edi+10]&向上找esi:& - 8b 5d 08&&&&&&&&&&&&&&&&&& - mov ebx,[ebp+08]& - 56&&&&&&&&&&&&&&&&&&&&&&&& - push esi& - 57&&&&&&&&&&&&&&&&&&&&&&&& - push edi& - 8b 3b&&&&&&&&&&&&&&&&&&&&&&- mov edi,[ebx]&006887FB - 85 ff&&&&&&&&&&&&&&&&&&&&&&- test edi,edi&006887FD - 8b f1&&&&&&&&&&&&&&&&&&&&&&- mov esi,ecx&这里重新下断点返回上一层:&0068AD33 - 8d 43 08&&&&&&&&&&&&&&&&&& - lea eax,[ebx+08]&0068AD36 - 50&&&&&&&&&&&&&&&&&&&&&&&& - push eax&0068AD37 - 8b ce&&&&&&&&&&&&&&&&&&&&&&- mov ecx,esi&0068AD39 - e8 b2 da ff ff&&&&&&&&&&&& - call &0068AD3E - 8b 1b&&&&&&&&&&&&&&&&&&&&&&- mov ebx,[ebx]&&&0068AD40 - 3b 5e 4c&&&&&&&&&&&&&&&&&& - cmp ebx,[esi+4c]&向上找esi:&0068ACB6 - 8b f1&&&&&&&&&&&&&&&&&&&&&&- mov esi,ecx&这里重新下断点返回上一层:&0062B14C - 8b 0d b4 20 87 00&&&&&&&&&&- mov ecx,[]------注意& - 85 c9&&&&&&&&&&&&&&&&&&&&&&- test ecx,ecx& - c7 45 fc 00 00 00 00&&&&&& - mov [ebp-04],&0062B15B - 74 05&&&&&&&&&&&&&&&&&&&&&&- je &0062B15D - 8b 11&&&&&&&&&&&&&&&&&&&&&&- mov edx,[ecx]&0062B15F - ff 52 64&&&&&&&&&&&&&&&&&& - call dword ptr [edx+64]& - 8b 0d ec 20 87 00&&&&&&&&&&- mov ecx,[008720ec] &&& - 8b 01&&&&&&&&&&&&&&&&&&&&&&- mov eax,[ecx]&其中有两层是查表过程,对应界面的各种控件,数据相应变化
UID:79326
在线时间114小时
金钱518威望451贡献值0社区警告0诚信值0账号服务0热心值1
回 流浪的猪 的帖子
:本层函数向上找esi:&0066BEC7 - 8b f1&&&&&&&&&&&&&&&&&&&&&&- mov esi,ecx&下断点返回上一层:&0066B4BA - 8b ce&&&&&&&&nb ..&( 16:12)&&&006888ED&&|& \8B47 10&&&&&& mov&&&& eax, dword ptr [edi+10]&&这里为什么要向上找esi啊&&&|.&&8B30&&&&&&&&&&mov&&&& esi, dword ptr [eax]&&&|.&&3BF0&&&&&&&&&&cmp&&&& esi, eax&&&|.&&74 15&&&&&&&& je&&&&&&short 0068890B&&&|&&&8B46 08&&&&&& /mov&&&& eax, dword ptr [esi+8]&&&|.&&85C0&&&&&&&&&&|test&&&&eax, eax&006888FB&&|.&&74 07&&&&&&&& |je&&&&&&short &006888FD&&|.&&8B4E 0C&&&&&& |mov&&&& ecx, dword ptr [esi+C] '压入堆在 ebp-c&&&|.&&51&&&&&&&&&&&&|push&&&&ecx&&&|.&&53&&&&&&&&&&&&|push&&&&ebx&&&|.&&FFD0&&&&&&&&&&|call&&&&eax
UID:79326
在线时间114小时
金钱518威望451贡献值0社区警告0诚信值0账号服务0热心值1
回 流浪的猪 的帖子
:本层函数向上找esi:&0066BEC7 - 8b f1&&&&&&&&&&&&&&&&&&&&&&- mov esi,ecx&下断点返回上一层:&0066B4BA - 8b ce&&&&&&&&nb ..&( 16:12)&&&你这个是普通的lua的&特殊的我就没戏了 比如 切换包裹 Packet_ChangeTabIndex(1);&这是我跟的 从下往上&&esi=722A8620&& esi == [edx+68] &&2F924 &&DD [[[esp-c-38-4+0x4c]+8]+0xfc]+68&&03C61FD0&&&&64:A1 &&mov&&&& eax, dword ptr fs:[0] DD [[[esp+0x4c]+8]+0xfc]+68&03C61FD6&&&&6A FF&&&&&&&&&& push&&&&-1&03C61FD8&&&&68 30EED403&&&& push&&&&03D4EE30&03C61FDD&&&&50&&&&&&&&&&&&&&push&&&&eax&03C61FDE&&&&64:&mov&&&& dword ptr fs:[0], esp&03C61FE5&&&&83EC 38&&&&&&&& sub&&&& esp, 38&03C61FE8&&&&56&&&&&&&&&&&&&&push&&&&esi&03C61FE9&&&&8BF1&&&&&&&&&&&&mov&&&& esi, ecx&&&03D61FFB&&&&8B4C24 4C&&&&&& mov&&&& ecx, dword ptr [esp+4C]&&esp+4c=ebp+c&03D61FFF&&&&8B10&&&&&&&&&&&&mov&&&& edx, dword ptr [eax]&03D62001&&&&51&&&&&&&&&&&&&&push&&&&ecx&03D62002&&&&56&&&&&&&&&&&&&&push&&&&esi&03D62003&&&&8BC8&&&&&&&&&&&&mov&&&& ecx, eax&03D62005&&&&FF52 0C&&&&&&&& call&&&&dword ptr [edx+C]&&03B15F50&&/.&&55&&&&&&&&&&&&push&&&&ebp&03B15F51&&|.&&8BEC&&&&&&&&&&mov&&&& ebp, esp&03B15F53&&|.&&8B45 0C&&&&&& mov&&&& eax, dword ptr [ebp+C]&03B15F56&&|.&&8B48 08&&&&&& mov&&&& ecx, dword ptr [eax+8]&03B15F59&&|.&&85C9&&&&&&&&&&test&&&&ecx, ecx&03B15F5B&&|.&&A3 DC80B403&& mov&&&& dword ptr [3B480DC], eax&03B15F60&&|.&&56&&&&&&&&&&&&push&&&&esi&03B15F61&&|.&&0F84 8D000000 je&&&&&&03B15FF4&03B15F67&&|&&&8BB1 FC000000 /mov&&&& esi, dword ptr [ecx+FC]&&&03B15FEB&&|.&&50&&&&&&&&&&&&push&&&&eax&03B15FEC&&|.&&8BCE&&&&&&&&&&mov&&&& ecx, esi esi=esi+68&03B15FEE&&|.&&E8 6D870100&& call&&&&03B2E760&&03B2E783&&|.&&33C5&&&&&&&&&&xor&&&& eax, ebp&03B2E785&&|.&&53&&&&&&&&&&&&push&&&&ebx&03B2E786&&|.&&898D A0FEFFFF mov&&&& dword ptr [ebp-160], ecx&&03B2E97E&&|.&&8B95 A0FEFFFF mov&&&& edx, dword ptr [ebp-160]&03B2E984&&|.&&8B4A 68&&&&&& mov&&&& ecx, dword ptr [edx+68]&03B2E987&&|.&&8B01&&&&&&&&&&mov&&&& eax, dword ptr [ecx]&03B2E989&&|.&&57&&&&&&&&&&&&push&&&&edi&03B2E98A&&|.&&FF50 0C&&&&&& call&&&&dword ptr [eax+C]&&&0066C08F&& & \53&&&&&&&&&&&&push&&&&ebx&&& .&&8BCE&&&&&&&&&&mov&&&& ecx, esi&&& .&&E8 59FDFFFF&& call&&&&0066BDF0
UID:82076
在线时间220小时
金钱302威望498贡献值0社区警告0诚信值0账号服务0热心值7
当跟到[[ecx+0xfc]+68]这里时,ecx就是所操作控件的指针了,这里控件也可以称为窗口,找到gui界面的顶级窗口指针,就可以找到各级窗口的任何一个窗口指针了。&另外:ecx存放this指针,esi有时存放上级ecx。
UID:79326
在线时间114小时
金钱518威望451贡献值0社区警告0诚信值0账号服务0热心值1
回 流浪的猪 的帖子
:当跟到[[ecx+0xfc]+68]这里时,ecx就是所操作控件的指针了,这里控件也可以称为窗口,找到gui界面的顶级窗口指针,就可以找到各级窗口的任何一个窗口指针了。&另外:ecx存放this指针,esi有时存放上级ecx。&( 15:47)&&&看不太懂 求教 QQ:
UID:79326
在线时间114小时
金钱518威望451贡献值0社区警告0诚信值0账号服务0热心值1
回 流浪的猪 的帖子
:&当跟到[[ecx+0xfc]+68]这里时,ecx就是所操作控件的指针了,这里控件也可以称为窗口,找到gui界面的顶级窗口指针,就可以找到各级窗口的任何一个窗口指针了。&另外:ecx存放this指针,esi有时存放上级ecx。 &&看不太懂 求教 QQ:& &=700) window.open('/bbs/attachment/Fid_157/157_17d64968c8.png?13');" style="max-width:700max-height:700" onload="if(is_ie6&&this.offsetWidth>700)this.width=700;">
访问内容超出本站范围,不能确定是否安全
Powered by & Copyright Time now is:11-27 02:18 &
版权所有 Gzip enabled
Total 0.030406(s) query 0, Time now is:11-27 02:18, Gzip enabled:主题 : lua CallFunc小技巧
级别: 新手上路
可可豆: 31 CB
威望: 32 点
在线时间: 28(时)
发自: Web Page
来源于&&分类
lua CallFunc小技巧&&&
此篇只是lua初学者的一些小总结,只是为了让同行们少走点弯路,大神可以绕行cc.CallFunc:create()方法为开发者提供的是两个参数,第一个参数是回调的方法,第二个参数可以是开发者自定义的table用法:&&&&
回调方法:&&&&
可能是自我习惯,我希望将动作的回调放置在一个方法中,这个功能则通过table来实现,table中定义不同的参数,来进行if 判断[友情提示:lua中如果使用某个方法,最好在调用上面进行创建,否则会报出nil value错误(初入lua,受害很深,诸位珍重)]
级别: 新手上路
UID: 141132
可可豆: 183 CB
威望: 153 点
在线时间: 79(时)
发自: Web Page
你也可以直接这么写:cc.CallFunc:create(function(node, value) &&&&&&-- 实现代码end, {tag=0})
级别: 新手上路
可可豆: 31 CB
威望: 32 点
在线时间: 28(时)
发自: Web Page
回 1楼(yojeajie) 的帖子
嗯,我的那种方法,主要是为了让动作的回调统一管理,如果出错了,在整个项目中查找这些动作,太乱,你这种就没有必要传入table了,没有意义
级别: 新手上路
UID: 141132
可可豆: 183 CB
威望: 153 点
在线时间: 79(时)
发自: Web Page
没明白什么意思
级别: 禁止发言
UID: 353310
可可豆: 314 CB
威望: 284 点
在线时间: 37(时)
发自: Web Page
用户被禁言,该主题自动屏蔽!
级别: 新手上路
UID: 458689
可可豆: 134 CB
威望: 98 点
在线时间: 51(时)
发自: Web Page
function StartScene:gotoNextScene()&&&&local scene=require(&app.scenes.SelectScene&).new()&&&&cc.Director:getInstance():replaceScene(scene)endfunction StartScene:addSlider()&&&&local progressto=cc.ProgressTo:create(5,100);&&&&local slider=display.newProgressTimer(&loading.png&, display.PROGRESS_TIMER_BAR)&&&&slider:setPosition(cc.p(display.cx,display.cy))&&&&slider:setMidpoint(cc.p(0,1));&&&&slider:setBarChangeRate(cc.p(1,0));&&&&slider:setPercentage(0);&&&&local label=cc.Label:createWithTTF(&Loading&,&fonts/arial.ttf&,30)&&&&label:setPosition(cc.p(200,30))&&&&label:setTextColor(cc.c4b(250, 0, 0,255))&&&&slider:addChild(label,1)&&&&local seq= cc.Sequence:create(progressto,cc.DelayTime:create(.2),cc.CallFunc:create(gotoNextScene(),self))&&&&slider:runAction(seq)&&&&self:addChild(slider,1)end为什么我这样写还是提示没有值呢
Do your want,Learn you must!
级别: 侠客
可可豆: 294 CB
威望: 294 点
在线时间: 142(时)
发自: Web Page
楼主啊。你用ide么。我用ide的seekWidgetByTag获取cocostudio导出的lua ui工程。结果报错invalid arguments in function 'lua_cocos2dx_ui_Helper_seekWidgetByTag'。知道什么情况么。。
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版Lua支持&尾调用消除(tail-call elimination)&。尾调用(tail call):当一个函数调用是另一个函数的最后一个动作时,该调用才算是一条&尾调用&。例如,下面的代码就是一条&尾调用&:
function f (x) return g(x) end
也就是说,当f调用完g之后就再无其他事情可做了。因此在这种情况下,程序就不需要返回那个&尾调用&所在的函数了。所以在&尾调用&之后,程序也不需要保存任何关于该函数的栈(stack)信息了。当g返回时,执行控制权可以直接返回到调用f的那个点上。有一些语言实现(例如Lua解释器)可以得益于这个特点,使得在进行&尾调用&时不好非任何栈空间。将这种实现称为支持&尾调用消除&。由于&尾调用&不会耗费栈空间,所以一个程序可以拥有无数嵌套的&尾调用&。例如,在第哦用以下函数时,传入任何数字作为参数都不会造成栈溢出:
function foo (n)
if n & 0 then return foo(n-1) end
判断当前的调用是一条&尾调用&的准则:一个函数在调用完另一个函数之后,是否就无其他事情需要做了。例如,下面的代码就不是一条&尾调用&:
function f (x) g(x) end
这个示例的问题在于,当调用完g后,f并不能立即返回,它还需要丢弃g返回的临时结果。类似的,以下所有调用也都不符合上述准则:
return g(x) + 1
-- 必须做一次加法
return x or g(x)
-- 必须调整为一个返回值
return (g(x))
-- 必须调整为一个返回值
在Lua中,只有&return &func&(&args&)&这样的调用形式才算是一条&尾调用&。Lua会在调用前对&func&及其参数求值,所以它们可以是任意复杂的表达式。举例来说,下买的呢调用就是一条&尾调用&:
return x[i].foo(x[j] + a*b , i + j)
[&尾调用& 迷宫游戏示例]&尾调用&类似一条goto语句。在Lua中&尾调用&的已答应永久是编写&状态机(state machine)&。这种程序通常以一个函数来表示一个状态,改变状态就是goto(或调用)到另一个特定的函数。举一个简单的迷宫游戏的例子来说明这个问题。例如,一个迷宫有几间房间,每间房间中最多有东南西北4扇门。用户在每一步移动中都需要输入一个移动的方向。如果在某个方向上有门,那么用乎可以进入相应的房间;不然,程序就打印一条警告。游戏目标就是让用户从最初的房间走到最终的房间。这个游戏就是一种典型的状态机,其中当前房间就是一个状态。可以将迷宫中的没见房间实现为一个函数,并使用&尾调用&来实现从一件房间移动到另一间房间。在以下代码中,实现一个具有4间房间的迷宫:
function room1 ()
local move = io.read()
if move == "sourth" then return room3()
elseif move == "east" then return room2()
print("invalid move")
return room1()
-- stay in the same room
function room2()
local move = io.read()
if move == "sourth" then return room4()
elseif move == "west" then return room1()
print("invalid move")
return room2()
function room3()
local move = io.read()
if move == "north" then return room1()
elseif move == "east" then return room4()
print("invalid move")
return room3()
function room4()
print("congratulations!")
通过调用出世房间来开始这个游戏:
若没有&尾调用消除&的话,每次用户的移动都会创建一个新的栈层(stack level),移动若干步之后就有可能会导致栈溢出。而&尾调用消除&则对用户已动的次数没有限制。这是因为每次移动实际上都只是完成一条goto语句到另一个函数,而非传统的函数调用。对于这个简单的游戏而言,或许会觉得将程序设计为数据驱动的会更好玩一点,其中将房间和移动记录在一些table中。不过,如果游戏中的没见房间都有个字特殊的情况的话,采用这种状态机的设计会更为合适。
阅读(...) 评论()2011年5月 C/C++大版内专家分月排行榜第二2010年9月 C/C++大版内专家分月排行榜第二
2009年11月 C/C++大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 luad precall crash 的文章

 

随机推荐