——徐志摩 安卓请求文件授权 在AndroidManifest.xml中加上 <!
(String name,int mode):打开对应文件的输出流 mode的参数如下 MODE_PRIVATE:该文件只能被当前程序读写 MODE_APPEND:追加打开的文件 MODE_WORLD_READABLE :文件的内容可以被其他应用程序读取 MODE_WORLD_WRITEABLE:该文件的内容可由其他程序读写 getDir(String name,int mode):获取或者创建对应的子目录 File getFilesDir():获取应用程序的数据文件夹的绝对路径 String[] fileList():返回应用的数据文件夹下所有文件 deleteFile(String):删除数据文件夹下指定文件 二 、写入示例代码(其中FILE_NAME表文件名) 代码如下:private void write(String content) { try { //追加模式打开文件输出 FileOutputStream 和FileOutputStream、FileReader、FileWriter读写SD卡文件 注意要点: 插入SD 配置应用程序读写权限 <!
在开发测试安卓APP时,遇到应用奔溃crash时,我们经常要抓取安卓APP日志来定位问题的原因,测试提交bug时也需要把日志提交给开发。 方法一adb命令 环境安装SDK(参考android sdk环境安装),使用adb工具,可参考之前的文章--安卓按开发测试小工具-adb 使用数据线链接手机 开启手机调试模式 cmd-->adb devices 查看手机是否连接 cmd--->adb logcat -v time>D:log.txt 然后运行对应的app 操作结束 使用ctrl+c 在电脑D盘下就有一个log.txt文件 方法二DDMS工具
解析 elf 文件有啥子用?最明显的两个用处就是:1、so 加固;2、用于 frida(xposed) 的检测! 本文使用 c 语言,编译器为 vscode。如有错误,还请斧正!!! c 版本代价太大了; 2、在安卓源码中,有个elf.h文件,这个文件定义了我们解析时需要用到的所有数据结构,并且给出了参考注释,是很好的参考资料。 2、e_type 字段:表示是可执行文件还是链接文件等,安卓上的 so 文件就是分享文件,一般该字段为 3,详细请看下图。 8、e_flags 字段:该字段表示该文件的权限,常见的值有 1、2、4,分别代表 read、write、exec。 2、p_offest 字段:该字段表明了这个段在该 so 文件的起始地址。 3、p_vaddr 字段:该字段指明了加载进内存后的虚拟地址,我们静态解析时用不到该字段。
PS:在高于安卓10的系统里,so的路径是/apex/com.android.runtime/lib64/libart.so,低于10的则在system/lib64/libart.so 函数名称 参数 0x3f3f0 Hook_Libc libc.so: 这是一个标准的 C 语言库,用于提供基本的系统调用和功能,如文件操作、字符串处理、内存分配等。 == -1 || str2.indexOf("test") ! dlclose、dlsym等函数,用于在运行时动态地加载和使用共享库 别 函数名称 参数 描述 动态链接库操作 dlopen const char *filename, int flag 打开动态链接库文件 简单来说,就是借助CModule对soinfo结构体进行解析 经过对比分析历代soinfo结构体的定义,可以确定从Android 8 ~ 14,结构体中init_array的位置都很稳定 于是通过下面的头文件中提取必要的内容
, 30 5月 2022 作者 847954981@qq.com 后端学习, 我的编程之路 Kotlin安卓开发学习(2) 和很多现代高级语言一样,Kotlin也是面向对象的。 这样,我们就拥有了三种方法来实例化类: val student1 = Student() val student2 = Student("Jack", 19) val student3 = Student
\system\app 这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。 在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是/data/文件夹中 \system\app\AlarmClock.apk 闹钟 \system\app\AlarmClock.odex system/lib/libwbxml_jni.so /system/lib/libwebcore.so /system/lib/libwpa_client.so /system/lib/libxml2wbxml.so ,bin文件夹名称是binary二进制的程序,里面主要是Linux系统自带的组件 Android手机网就主要文件做下简单的分析介绍: \system\bin\akmd \system\bin\am \system\bin\dhcpcd DHCP服务器 \system\bin\dumpstate 状态抓取器 \system\bin\dumpsys 系统抓取器 \system\bin\dvz2
前言 一道so文件动态加解密的CrackMe,运行时解密要执行的函数,且在执行后立马加密CrackMe:dex文件加的数字壳,so文件无壳,因为反调试,所以so文件采用全静态分析 分析环境:脱壳工具:FART GDA IDA Frida PyCharm VSCode 2. ) 获取xxoo函数的文件偏移(xxoo_offset) xxoo函数的文件偏移 = .txt段的文件偏移 + xxoo函数相对于.txt段的文件偏移xxoo函数相对于.txt段的文件偏移 = xxoo , 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B , 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B
最近一个安卓的项目,本来是使用安卓板4.2的;但由于生产需求将原来的单板集成到整体(显示触屏+安卓)。由于其提供的样板是6.0。整个程序的主功能运行还可以,就是无法写日志和播放本地视频。 于是研究一下,发现原来是他们提供的安卓未root导致的。于是跟供应商联系给root文件,谁知这丫的不给,就给了个安卓的系统签名。。好吧,给系统签名就重新编译吧。 2、那只能在目前的签名中加入系统签名,这个真的比较麻烦。但麻烦一次,后面就简单了。那怎么做呢? /KEY20190711.jks") storePassword "A1A2A3A4A5" keyAlias "KEY0" keyPassword "A1A2A3A4A5" } release { storeFile file("..
视频教程地http://www.bilibili.com/video/av1225648/
so文件是Linux下的程序函数库,即编译好的可以供其他程序使用的代码和数据 linux下何谓.so文件: 用过windows的同学应该都知道 .dll文件吧, 这二者有什么共通之处呢,其实 .so文件就跟 .dll文件差不多 一般来说.so文件就是常说的动态链接库, 都是C或C++编译出来的。 与Java比较就是:它通常是用的Class文件(字节码) Linux下的.so文件时不能直接运行的,一般来讲,.so文件称为共享库 那么.so文件是怎么用的呢? 命令:$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so 参考2:都是由C或C++编译出来的 -shared 该选项指定生成动态连接库 (2) 动态库的链接 这里有个程序源文件 test.c 与动态库 libtest.so 链接生成执行文件 test: 命令:$ gcc test.c -L.
安卓文件在Mac电脑上无法传输?你需要一款安卓设备传输工具! MacDroid Mac版是一款强大的安卓设备传输助手,使用非常简单,只需要将安卓手机使用 USB 连接到 Mac 电脑上即可将安卓设备挂载为本地磁盘,就像编辑mac磁盘上的文件一样编辑安卓设备上的文件 下载:MacDroid Mac版在Mac上将Android作为磁盘挂载Android的内部和外部存储都可以安装在Mac上编辑Android文件,而无需在计算机上复制它们您只需要MacDroid和通过USB
实用方法很简单,在手机上安装这个软件,然后运行,然后进入Setting,点击User's settings,然后Create new user(我新建了一个叫做ACE的用户),注意这里在豌豆荚的截图只是做教程用的,实际不需要连接豌豆荚,甚至不需要WIFI,只要你打开了GPRS
= (Button) findViewById(R.id.button2); button.setOnClickListener(this); button2.setOnClickListener fitstart" 把图片按比例扩大/缩小到视图的最小边,显示在视图的上部分位置 //android:scaleType="matrix" 用矩阵来绘制 //图片来源,需要将图片复制放到res/drawable文件夹里面 radiobutton1" //选项文字 android:checked="ture" //是否默认选中 7.ImageView ImageView控件负责显示图片,其图片的来源可以是在资源文件中的 fitstart" 把图片按比例扩大/缩小到视图的最小边,显示在视图的上部分位置 //android:scaleType="matrix" 用矩阵来绘制 //图片来源,需要将图片复制放到res/drawable文件夹里面 在布局文件中使用: <ProgressBar android:id="@+id/pb" android:layout_width="match_parent" android:
LayoutInflater.from(ToastActivity.this).inflate(R.layout.layout_toast, null); toast.setView(view1); 使用inflate从xml文件中加载我们定义的布局 android:id="@+id/textView" android:layout_gravity="center_horizontal" /> </LinearLayout> 在线程中使用 根据安卓编程规范
如果你也正在学习Android可以一起交流一下~~ 上代码:(安卓客户端代码)直接贴出关键部分 /* * 图片上传 */ private void httpUpload() { HttpClient urlServer); File file = new File(pathToOurFile); MultipartEntity mpEntity = new MultipartEntity(); // 文件传输 IOException e) { e.printStackTrace(); } httpclient.getConnectionManager().shutdown(); //上传成功,删除临时文件 我这里只是为了实现上传功能,随后需要按照服务器端的返回结果进行处理~ 服务器端代码:(PHP代码) $arrTmp = pathinfo($_FILES['file']['name']);//获取上传文件信息
如果之前是安卓用户,在购买 iphone 12 新款手机之后,如何从安卓转移数据到 ios?可以通过苹果官方提供的“转移到 ios”应用,将安卓手机中的内容进行转移,感兴趣的朋友快来看看吧! 使用前准备事项: 1.通过苹果官网下载“转移到 ios”应用,并在安卓手机中进行安装。 2.在安卓设备上,确保 wi-fi 已开启。 3.将新 iphone 和安卓设备插入电源。 例如,在安卓设备上,“转移到 ios”app 应全程显示在屏幕上。如果您在转移完成之前在安卓设备上使用另一个 app 或接到电话,您的内容将无法完成转移。 2.在安卓设备上打开“转移到 ios”app:打开后点击“继续”,轻点“同意”以继续,然后轻点“查找代码”屏幕右上角的“下一步”。 3.在 ios 设备上,轻点“从安卓设备转移数据”屏幕上的“继续”。 如果安卓设备显示您的互联网连接信号弱的警告,您可以忽略这条警告。 4.在安卓设备上输入代码。然后等待“传输数据”屏幕出现。 5.在安卓设备上,选择您想要转移的内容并轻点“下一步”。
大家好,又见面了,我是你们的朋友全栈君 这篇是一系列的关于SO文件保护的自我理解,SO文件保护分为加固,混淆以及最近炒的比较火的虚拟机 加固就是将真正的so代码保护起来,不让攻击者那么轻易的发现,至于混淆,由于ART机制的介入,使得O-LLVM越来越火,这以后有机会再分析,这次主要是基于有源码的so文件保护,下次介绍无源码的so文件保护 流程安排:1.编写一个Native程序,对里面的关键函数放在自己所定义的节中,并且编写解密函数(当然这个是在你已知加密函数的基础上)2.对得到的.so文件进行加密3.加密后的替换验证接下来走流程:1.编写一个简单的计算器 ok,以上编写完以后就编译生成.so文件。 2.对得到的.so文件进行加密:这一块也是一个重点,大致上逻辑我们可以这么认为:先找到那个我们自己所定义的节,然后找到对应的offset和size,最后进行加密,加密完以后重新的写到另一个新的.so文件中
方法1: 修改pc端的hosts文件(本地hosts配置优先级最高),并使手机或模拟器走pc端的代理(借助Charles等代理工具)。 方法2: 修改手机或模拟器的hosts。 下面就总结记录一下放法2的实现步骤,以windows系统为例。 在D盘下创建文件【hosts】,在控制台执行 adb pull /system/etc/hosts D:\hosts,就将模拟器的hosts文件拉取到了Windows中。 ? 用文本编辑器修改hosts这个文件中的host信息,注意文件中原本有的内容:127.0.0.1 localhost要保留,新增的行最好是复制这原本就带有的行,并替换其中的内容,以免格式不对造成配置不生效 控制台执行:adb push D:\hosts /system/etc/hosts,即将Windows中修改好的hosts文件重新导入了模拟器中。
做的比较简陋,将就用哈,自己优化也许 调用: this.$refs.openPdf.preview(item.url) 使用: <previewPdf ref="openPdf"></previewPdf> 引用: import previewPdf from '@/components/preview-pdf/preview-pdf.vue' //pdf预览 <template> <view> </view