是否有可能通过编译的二进制文件在Android中生成本地缓冲区溢出以获得根访问权限?
我想知道是否有可能通过本地缓冲区溢出(我将使用包含最简单的本地缓冲区溢出的编译程序生成)来对任何Android操作系统进行根操作:是否有可能通过编译的二进制文件在Android中生成本地缓冲区溢出以获得根访问权限?,android,c++,root,buffer-overflow,Android,C++,Root,Buffer Overflow,我想知道是否有可能通过本地缓冲区溢出(我将使用包含最简单的本地缓冲区溢出的编译程序生成)来对任何Android操作系统进行根操作: char buf[BUFSIZE]; gets(buf); 一旦我编译了这个程序,我就会把二进制文件放到/存储器中,通过ADB运行的shell来执行,那么有可能做到我说的吗 如果是的话,我将如何对崩溃进行反向工程,开发一个漏洞,使我在设备中获得root访问权限?你不能。最后,这只是Linux。在非root帐户下运行的程序无法通过有意或无意的方法获得root权限。
char buf[BUFSIZE];
gets(buf);
一旦我编译了这个程序,我就会把二进制文件放到/存储器中,通过ADB运行的shell来执行,那么有可能做到我说的吗
如果是的话,我将如何对崩溃进行反向工程,开发一个漏洞,使我在设备中获得root访问权限?你不能。最后,这只是Linux。在非root帐户下运行的程序无法通过有意或无意的方法获得root权限。有许多关于android root的好文章,例如。他们解释说,安卓设备的根是通过使用安卓操作系统(又称固件)中的漏洞(bug)实现的 在android设备的根目录中从未涉及过缓冲区溢出 虽然从技术上讲,通过使用实现缓冲区溢出是可能的,但从缓冲区溢出到获得根访问还有很长很长的路要走 正如MSalters正确指出的那样,您的C代码将在linux堆栈上运行。有相当多的严重的防御措施到位,以防止容易利用缓冲区溢出
如果您不想接受“否”作为答案,可以说:“可能性很小,可能不值得您花费时间”:-不,您不能,因为java有一个运行时环境,可以检查这些内容并防止溢出被利用。@Andreas Vogl shell二进制文件不在java运行时执行。但是,恕我直言,这样的攻击将在Linux级别上处理。@Onik那么这是可能的吗?因为我想我可以生成易受攻击的编译二进制文件并将其推送到设备上,但问题是我不知道如何通过adb调试android中的本地溢出崩溃?我见过有人这样做,比如著名的漏洞:ZergRush。那么从编程的角度来看,根是如何工作的呢?从我在互联网上读到的资料来看,我发现根的工作原理主要是使用缓冲区溢出,因为当从系统级而非用户级驱动的函数所使用的内存溢出时,这表明可以用一定数量的字节溢出内存,所以让我们假设“get()”在这里使用的内存则为500字节(内存中4字节EIP重定向到sh二进制+465字节垃圾+31字节sh二进制)通过注入以下内容,我们可以获得根访问权限,因为内存是系统级内存。如果不是这样,请解释一下如何以编程方式进行根访问?@0x01Brain:这假设存在一个在根下运行的二进制文件。你的应用程序没有。我不是在说“Java”应用程序,我是在说一个为Android编译的“C”二进制文件,如果你知道我的意思的话。你似乎不明白缓冲区溢出的作用,如果你读得更多,你就会明白我的确切意思。