如何使用短完整路径创建符号链接?

Posted

技术标签:

【中文标题】如何使用短完整路径创建符号链接?【英文标题】:How to create a symbolic link with short fullpath? 【发布时间】:2013-12-25 22:12:41 【问题描述】:

我正在编辑一些binaries 的路径,但没有重新编译它们。

我想用一条相同长度的路径替换我无法创建的/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,但它在我的手机上是specific,并且根据@ChrisStratton 没有记录。 /data/logcat_log 也一样。

/sdcard 被排除在外,因为 fuse 选项 rw,nosuid,nodev,relatime,user_id=1015,group_id=1015,default_permissions,allow_other 限制链接和可执行文件,而 /lib/ld-linux-armhf.so.3 将被执行。

有谁知道我还能如何做到这一点?

【问题讨论】:

不,他们不是。您在这些方面发现的内容因 android 版本而有很大差异。考虑使用库路径覆盖环境变量来启动您的二进制文件。 好的,我更新了我的问题:/data/.tmp/ 不可用,所以我要求有人提供我的短完整路径,并提供赏金。 您认为最简单的解决方案是生成 APK 吗? @user2987828 您不需要以 root 身份登录来创建指向受保护内容的合成链接吗? @meewoK:没有。您可以在终端 IDE 中尝试ln -s /data/data/jackpal.androidterm/lib/libjackpal-androidterm4.so 3,即使 /data/data/jackpal.androidterm 不存在,它也会创建符号链接。如果您安装终端仿真器,该路径将存在并且符号链接将起作用。这是因为所有涉及的目录在ls -l 的输出的第十列中至少有最后一个x(安装终端仿真器后尝试ls -ld / /data /data/data /data/data/data/jackpal.androidterm/ 【参考方案1】:

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

然后我修改了编辑器的标签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);
  

然后我只需单击“运行”按钮,然后 BOOM 符号链接现在就在这里好了,并且 /data/data/com.symli 本身就是一个世界可写目录(设置了粘性位):

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

我已将生成的 .apk 上传到http://sf.net/projects/gentooandroid/files/symlinksFor***Question20459834v2.apk/download(权限:无!SHA256sum:01fd17a8700f2cb5b5bb943b38b623b1400679fa03c35ccb204619d1d5d486ff MD5sum:879af0633504ab25487ef)

【讨论】:

我在寻找具有短包名称的外壳应用程序时发现了这个 apk 制造商 com.aide.ui。我现在可以制作简单的 APPS 而无需授权任何人查看我的私生活! 部分`; env > /data/data/com.symli/getRuntimeExecEnv` 没有工作,所以读者可以禁止它。使用我的 .apk(而不是使用 com.aide.ui)的读者无法从 .apk 中抑制它。【参考方案2】:

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

【讨论】:

谢谢,我不知道 PatchELF。当我无法重新编译时会很方便(这种情况并不常见)。

以上是关于如何使用短完整路径创建符号链接?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查提供的路径是符号链接还是常规路径

windows创建符号链接命令

windows创建符号链接命令

windows创建符号链接命令

如何移动相对符号链接?

linux命令:ln 链接文件--硬链接,符号链接(软链接)