Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.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 如何创建具有短完整路径的符号链接?_Android_Binaryfiles_Directory Structure_Dynamic Linking - Fatal编程技术网

Android 如何创建具有短完整路径的符号链接?

Android 如何创建具有短完整路径的符号链接?,android,binaryfiles,directory-structure,dynamic-linking,Android,Binaryfiles,Directory Structure,Dynamic Linking,我正在编辑一些短路径,而不是重新编译它们 我想替换/lib/ld linux armhf.so.3,我不能用相同长度的路径来创建它,而不需要在手机上加根。它应该是相同长度的,因为我正在编辑二进制文件。在下面列出的不同可能性之后,我选择了路径/data/data/com.clk/.so.3。我想做的是创建/data/data/com.clk/.so.3,它应该是指向/data/data/com.spartacusrex.spartacuside/gentoo_armv6l/lib/ld linux

我正在编辑一些短路径,而不是重新编译它们

我想替换
/lib/ld linux armhf.so.3
,我不能用相同长度的路径来创建它,而不需要在手机上加根。它应该是相同长度的,因为我正在编辑二进制文件。在下面列出的不同可能性之后,我选择了路径
/data/data/com.clk/.so.3
。我想做的是创建
/data/data/com.clk/.so.3
,它应该是指向
/data/data/com.spartacusrex.spartacuside/gentoo_armv6l/lib/ld linux armhf.so.3

我最初使用的是
/proc/5781/cwd/rmhf.so.3
,但其他应用程序(即其他linux帐户)无法读取

然后我尝试了
/data/.tmp
,但它是我手机上的,根据@ChrisStratton的说法没有文档记录。与
/data/logcat\u log
相同

/sdcard
被排除在外,因为fuse选项
rw、nosuid、nodev、relatime、user\u id=1015、group\u id=1015、default\u权限、allow\u other
限制链接和可执行文件以及
/lib/ld linux armhf。因此将执行.3

有人知道我还可以如何做到这一点吗?

您是否考虑过使用而不是滚动您自己的二进制编辑?它声称足够聪明,可以根据需要在ELF头中插入一个额外的页面,为更长的解释器或RPATH字段腾出空间。这将允许您使用真正的解释器值,而不需要符号链接。

我最终偶然发现了一款不需要任何x86计算机且可在手机上运行的解释器。没有支付任何费用,在二十分钟内,我创建了我的第一个apk,并能够在临时授权未知来源后安装它。那是我的第一个java程序。我为apk选择了一个简短但信息丰富的名称,
com.symli
com.
似乎是必要的)

然后我修改了编辑器的选项卡
MainActivity.java
,以获得:

package com.symli;

import android.app.*;
import android.os.*;

public class MainActivity extends Activity 
{
  @Override
  protected void onCreate(Bundle savedInstanceState)
  {
    try
    {
      Runtime.getRuntime().exec("ln -s /data/data/com.termux/com.symli /data/data/com.symli/n");
      Runtime.getRuntime().exec("chmod 1777 /data/data/com.symli");
    } catch (java.io.IOException e) {
    }
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
  }
}
然后我只需点击“运行”按钮,符号链接就永远在这里,/data/data/com.symli本身就是一个世界可写目录(设置了粘性位):


我已将生成的.apk上载到(权限:无!SHA256sum:01fd17a8700f2cb5b5bb943b38b623b1400679fa03c35ccb204619d1d5d486ff MD5sum:879af0633504ab25462a1f9b2303587e)

否,它们不是。在这些方面,您会发现Android版本的差异很大。请考虑用库路径覆盖环境变量启动二进制文件。OK,我更新了我的问题:/DATAB/TMP/不可用,所以我要求有人来生成我的短全路,有赏金。你认为最简单的解决方案是生成一个APK吗?@user2987828你不需要以root身份登录来创建一个到受保护的东西的合成链接吗?@meewoK:不。你可以在终端IDE中尝试
ln-s/data/data/jackpal.androidterm/lib/libjackpal-androidterm4.so
,它将创建一个符号链接,即使/data/data/jackpal.androidterm不存在。如果安装终端仿真器,该路径将存在,符号链接将工作。这是因为所有涉及的目录在
ls-l
输出的第十列中至少有最后一个
x
(安装终端模拟器后,尝试
ls-ld//data/data/data/data/data/data/data/jackpal.androidterm/
)谢谢,我不知道PatchELF。当我无法重新编译(这种情况并不常见)时会很方便。我在寻找具有短程序包名称的shell应用程序时找到了这个apk生成器com.aide.ui。我现在可以制作简单的应用程序,而不需要授权任何人查看我的私生活!第`;env>/data/data/com.symli/getRuntimeExecEnv`不工作,因此读取器可以抑制它。使用my.apk(而不是使用com.aide.ui)的读卡器无法从.apk中抑制它。
lrwxrwxrwx 1 10150 10150 50 Nov  3 13:17 /data/data/com.symli/n -> /data/data/com.termux/com.symli
drwxrwxrwt 4 10150 10150 4096 Nov  3  2015 /data/data/com.symli