Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 调用函数出现问题(可能是SSP)_Android_C++_Assembly_Arm_Ssp - Fatal编程技术网

Android 调用函数出现问题(可能是SSP)

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

有一个函数我试图从这个游戏中调用这个函数,但我相信它有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_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检查之类的
  • 如何钩住外部参照,因为钩住外部参照没有问题
  • 重基也不是问题,因为我可以重基偏移量并进行内存修补

您发布的所有分解都没有任何形式的堆栈保护。我们无法解释函数崩溃的原因,因为我们不清楚您在Android上钩住和调用它们的方法。但请注意:如果您没有向函数传递正确的参数,函数将崩溃。
lua_gettop
从输入指针访问两个32位值,例如例如。@MargaretBloom感谢您的回复。我调用它是正确的,因为我在其他游戏中使用过它,现在我知道大部分LuaAPI。