Android 检测目录是否存在,不存在则创建

方法如下:

我们假设SD卡是存在的,如果要检测SD卡是否存在,请参考前面的关于录音的文章,里面有具体的内容,和使用SD卡需要添加的权限,否则无法操作扩展存储设备

1.只创建一级目录的形式为:

例如:只在SD卡上建立一级目录("/sdcard/audio/"):

[java]  view plain copy print ?
  1. boolean isFolderExists(String strFolder)  
  2.     {  
  3.         File file = new File(strFolder);  
  4.           
  5.         if (!file.exists())  
  6.         {  
  7.             if (file.mkdir())  
  8.             {  
  9.                 return true;  
  10.             }  
  11.             else  
  12.                 return false;  
  13.         }  
  14.         return true;  
  15.     }  

2.建立多级目录的形式如下:

例如:在SD卡上建立多级目录("/sdcard/meido/audio/"):


[java]  view plain copy print ?
  1. boolean isFolderExists(String strFolder) {  
  2.         File file = new File(strFolder);          
  3.         if (!file.exists()) {  
  4.             if (file.mkdirs()) {                  
  5.                 return true;  
  6.             } else {  
  7.                 return false;  
  8.   
  9.             }  
  10.         }  
  11.         return true;  
  12.   
  13.     }  
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是使用Frida检测安卓App中是否存在运行其他可执行程序的风险的详细教程: 1. 安装Frida 在PC上安装Frida,可以使用pip命令进行安装: ``` pip install frida ``` 2. 安装Frida Server 在安卓设备上安装Frida Server,可以从Frida官网下载对应的Frida Server,然后使用adb命令将Frida Server安装到设备上: ``` adb push frida-server /data/local/tmp/ ``` 然后使用adb命令启动Frida Server: ``` adb shell "chmod 755 /data/local/tmp/frida-server" adb shell "/data/local/tmp/frida-server &" ``` 3. 编写脚本 使用Frida的Python API编写一个脚本,用于检测安卓App中是否存在运行其他可执行程序的风险。下面是一个简单的示例脚本: ``` import frida import re # 定义要检测的App名称 app_name = "com.example.app" # 定义要检测的进程名称 process_name = "com.example.app:process_name" # 定义要检测的可执行程序名称 executable_name = "executable_name" # 函数:打印进程信息 def on_message(message, data): if message['type'] == 'send': print(message['payload']) # 连接到Frida Server device = frida.get_usb_device() session = device.attach(app_name) # 加载JavaScript脚本 with open("script.js", "r") as f: script_code = f.read() script = session.create_script(script_code) script.on('message', on_message) script.load() # 向JavaScript脚本发送数据 script.post({'process_name': process_name, 'executable_name': executable_name}) # 等待JavaScript脚本执行完毕 input() ``` 4. 编写JavaScript脚本 在同一目录创建一个名为`script.js`的文件,编写JavaScript脚本。下面是一个简单的示例脚本: ``` Java.perform(function() { var process_name = ""; var executable_name = ""; var Pattern = Java.use("java.util.regex.Pattern"); var Matcher = Java.use("java.util.regex.Matcher"); var Pattern.compile.overload('java.lang.String').implementation = function(pattern) { var regex = pattern; if (pattern == ".*") { regex = "^.*$"; } return this.compile(regex); }; var ProcessManager = Java.use("android.os.ProcessManager"); ProcessManager.getRunningAppProcesses.implementation = function() { var appProcesses = this.getRunningAppProcesses(); var newAppProcesses = []; for (var i = 0; i < appProcesses.size(); i++) { var appProcess = appProcesses.get(i); var processName = appProcess.processName.value; var pid = appProcess.pid.value; if (processName == process_name) { var cmdlineFile = "/proc/" + pid + "/cmdline"; var cmdline = ""; try { var FileInputStream = Java.use("java.io.FileInputStream"); var FileChannel = Java.use("java.nio.channels.FileChannel"); var ByteBuffer = Java.use("java.nio.ByteBuffer"); var fileInputStream = FileInputStream.$new(cmdlineFile); var channel = fileInputStream.getChannel(); var buffer = ByteBuffer.allocate(1024); while (channel.read(buffer) != -1) { buffer.flip(); while (buffer.hasRemaining()) { var b = buffer.get(); if (b == 0x00) { break; } cmdline += String.fromCharCode(b); } buffer.clear(); } channel.close(); fileInputStream.close(); } catch (e) { cmdline = ""; } var pattern = Pattern.compile(executable_name, Pattern.CASE_INSENSITIVE); var matcher = pattern.matcher(cmdline); if (matcher.find()) { newAppProcesses.push(appProcess); } } } return Java.array('android.app.ActivityManager$RunningAppProcessInfo', newAppProcesses); }; }); rpc.exports = { check_executable: function(data, reply) { process_name = data.process_name; executable_name = data.executable_name; } }; ``` 该脚本的功能是获取指定进程中所有正在运行的进程的信息,并使用正则表达式判断是否存在运行其他可执行程序的风险。该脚本还通过Frida的RPC机制,提供了一个函数`check_executable`,用于接收Python脚本发送的数据。 5. 运行脚本 在命令行中运行Python脚本: ``` python script.py ``` 然后在脚本运行输入任意字符,等待JavaScript脚本执行完毕即可。 需要注意的是,该示例脚本只是一个简单的演示,实际使用需要根据具体的情况进行修改和完善。同,使用Frida进行安卓应用程序的检测需要有一定的编程基础和安卓系统的知识,如果您不确定如何操作,建议先学习相关知识再进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值