Android 调用函数出现问题(可能是SSP)
有一个函数我试图从这个游戏中调用这个函数,但我相信它有SSP(),但我不是100%确定。 别忘了这是安卓系统 这就是功能:Android 调用函数出现问题(可能是SSP),android,c++,assembly,arm,ssp,Android,C++,Assembly,Arm,Ssp,有一个函数我试图从这个游戏中调用这个函数,但我相信它有SSP(),但我不是100%确定。 别忘了这是安卓系统 这就是功能: int\uuuu快速调用sub\u14e6b64(inta1) { 返回(*(杜沃德*)(a1+8)-*(杜沃德*)(a1+12))>>4; } 你们中的一些人可能知道这个函数,它是lua_gettop。 以下是asm以了解更多信息: .text:014E6B64 sub_14E6B64;外部参照代码:sub_532ADC+22↑P .文本:014E6B64;sub_53
int\uuuu快速调用sub\u14e6b64(inta1)
{
返回(*(杜沃德*)(a1+8)-*(杜沃德*)(a1+12))>>4;
}
你们中的一些人可能知道这个函数,它是lua_gettop。
以下是asm以了解更多信息:
.text:014E6B64 sub_14E6B64;外部参照代码:sub_532ADC+22↑P
.文本:014E6B64;sub_532D74+22↑P
.文本:014E6B64__放松{
.text:014E6B64 LDRD.W R0,R1[R0,#8]
.文本:014E6B68接头R0、R0、R1
.文本:014E6B6A ASRS R0,R0,#4
.文本:014E6B6C BX LR
.text:014E6B6C;功能结束子功能
问题是,我没有识别asm或伪代码中的任何SSP,但有很多人说有。如果我尝试调用此函数,它将崩溃,但如果我进入外部参照,我可以找到另一个调用我们函数的函数,而不执行其他操作:
我可以调用任何以LDR指令开始的函数,只调用不同的函数。所以,问题解决了,只要找到使用LDR的函数的外部参照并调用它就行了?不
75%的函数没有这些函数,您需要直接调用它们,但它会崩溃。
sub_14E6B64是如果不使用外部参照调用就会崩溃的组件之一
有人这样说游戏:
Return check - Yes, but in a different way. They use a compiler option that automatically protects their functions called SSP (Stack Smashing Protection) You can already tell just by looking at any function, like for example in lua_getfield. A big difference is that pretty much all of the functions are protected.
但我没有从我在网上看到的例子中看到SSP。
那么,我该怎么做?放松可能是撞车的原因吗?
它在挂接函数时也会崩溃,而不仅仅是调用函数。
我也愿意为这个问题的解决付出很多!
如果您有任何问题,请发表评论
我所知道的不是问题所在:
- 问题不在于我如何称呼它,因为我可以毫无问题地称呼那个外部参照。一定有一些SSP检查之类的
- 如何钩住外部参照,因为钩住外部参照没有问题
- 重基也不是问题,因为我可以重基偏移量并进行内存修补
lua_gettop
从输入指针访问两个32位值,例如例如。@MargaretBloom感谢您的回复。我调用它是正确的,因为我在其他游戏中使用过它,现在我知道大部分LuaAPI。