ARM64内存中的dirent,记一个判断文件后缀的方式
dirent结构
struct dirent
{ long d_ino; /* inode number 索引节点号 */ off_t d_off; /* offset to this dirent 在目录文件中的偏移 */ unsigned short d_reclen; /* length of this d_name 文件名长 */ unsigned char d_type; /* the type of d_name 文件类型 */ char d_name [NAME_MAX+1]; /* file name (null-terminated) 文件名,最长255字符 */
}
ARM64下dirent内存
0x10f85b640: 0xd6 0x50 0x00 0x00 0x00 0x00 0x00 0x00
0x10f85b648: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x10f85b650: 0x40 0x00 0x21 0x00 0x08 0x50 0x2d 0x70
0x10f85b658: 0x69 0x6e 0x6f 0x74 0x6e 0x6f 0x69 0x72
0x10f85b660: 0x5f 0x4d 0x2d 0x53 0x54 0x42 0x4c 0x5f
0x10f85b668: 0x56 0x2d 0x6d 0x5f 0x5f 0x6d 0x2d 0x32
0x10f85b670: 0x2e 0x35 0x2e 0x74 0x78 0x74 0x00 0x00
0x10f85b678: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
偏移0x12的位置:0x21,是文件名的长度d_namlen。
偏移0x14的位置:0x08,是文件的类型d_type
偏移0x15的位置开始,长度0x21,是文件名的首地址。
这里文件名是:P-pinotnoir_M-STBL_V-m__m-2.5.txt
文件名后缀匹配
需要匹配的文件名后缀是:.trx,HEX形式:2E747278
转换成小端模式下的4字节uint结果是:0x7872742E
现有汇编代码如下:
__text:000000010361E100 ADD X8, X23, X19
__text:000000010361E104 LDUR W8, [X8,#0x11]
__text:000000010361E108 CMP W8, W27
其中X23是dirent的初始地址:0x10f85b640
X19读取到的文件名长度:0x21
W27是待匹配文件后缀.trx在小端模式下的uint:0x7872742E。
这里0x11 = 0x15 - 4,其中4是匹配的后缀.trx的长度。
读到的W8,就是实际的文件名的后4个字节.txt
然后和W27匹配,也就是比较文件名后缀。
举一反三
假如要匹配后缀.db(此时长度只有3,而uint有4个字节),先将其转换成小端uint:0x62642E
然后同样LDUR W8,[X8, #0x11](为什么不是#0x12呢?),
再将其右移8位,LSR W8, W8, #8,
再和存储了0x62642E的W27进行CMP,应该就没问题了。
这里只是想象的代码,没有实际测试,如果错了请告诉我
Orz
参考
dirent结构
readdir函数
ARM64内存中的dirent,记一个判断文件后缀的方式相关推荐
- 【学习日志】2022.09.02 (C++)strcmp和stricmp、strcmpi三者之间的区别、C语言判断文件后缀名、ZENO Audio Update、TEN MINUTES PHYSICS
(C++)strcmp和stricmp.strcmpi三者之间的区别 (strcmpi在Windows C标准库实现,但不在GNU C标准库实现) #include <string.h> ...
- 【delphi】判断文件的编码方式(ANSI、Unicode、UTF8、UnicodeBIG)
在开发中,经常会碰到文件编码格式不正确,有时也需要进行编码转换,具体的编码原理可以自行查找,这里记录下我的处理方式.根据这个原理稍加修改即可实现编码转换和自动判断. {判断文件的编码方式,可以实现编码 ...
- c语言文件后缀名怎么隐藏起来,win10中怎样查看被隐藏的文件后缀名 win10显示文件后缀名的设置方法...
win10是一款不错的操作系统,但是有很多刚装的用户有很多疑问,那么win10中怎样查看被隐藏的文件后缀名?下面小编带来win10显示文件后缀名的设置方法,希望对大家有所帮助. win10显示文件后缀 ...
- js下载文件并修改文件名 / js判断文件后缀
js下载文件并修改文件名 / js判断文件后缀 代码如下(示例): //handlerName:文件名 filePath:下载路径downloadFile (handlerName, filePath ...
- linux if 判断文件,shell中的逻辑判断,if 判断文件、目录属性,if判断的一些特殊用法...
格式1:if 条件 ; then 语句; fi //如果满足条件,然后执行语句 [root@akuilinux01 shell]# cat if1.sh #!/bin/bash a=5 if [ $a ...
- C++中的_access函数(判断文件是否存在)
C++中的_access函数 2018年08月21日 13:33:04 monk1992 阅读数 5402 今天读代码看到一个access函数,当时没明白怎么回事.man了一下才知道该函数主要用于文件 ...
- RT-Thread中如何预编译一个.c文件
本文介绍在RT-Thread系统,使用scons,如何预编译一个.c文件 首先新建一个测试文件test.c #include "rtthread.h"void test(void) ...
- python判断文件后缀_Python 判断文件后缀是否被篡改
自己用Python写了个对文件后缀判断的脚本, 目前支持的文件类型还不是很多,还有待完善. 支持Microsoft Office (.pptx .docx .xlsx) Pyhton版本为3.6 #! ...
- 前端判断文件后缀名_JS 获取文件后缀,判断文件类型(比如是否为图片格式)
1.获取文件后缀H3I免费资源网 有时候我们需要通过文件名或者路径,得到该文件的后缀名(扩展名),可以通过如下方式进行截取:H3I免费资源网 //文件路径 var filePath = "f ...
最新文章
- Chrome 技术篇-json查看,json格式化,JSONView插件
- 实现库函数strcpy
- React-生命周期杂记 1
- 微软在线office online 使用时遇到的一些问题
- php 去掉字符串的最后一个字符
- kali linux之选择和修改exp与windows后渗透
- IE8 默认以Web Standards模式显示网页 全面遵循Web标准
- 小米3c路由器拆机_小米AC2350无线路由器拆机-路由器交流
- 使用GAT解析Minidump(图形界面)
- 计算机网络四个阶段的主要特征,1计算机的四个发展阶段的主要特征
- 高分子物理考研概念及要点、考点总结
- I want to be a teacher when I grow up ——长大后我想当老师
- 东华OJ第85题 计算多项式的值
- 3D中的OBJ文件格式详解(转)
- UI设计中的App标签栏中的设计细节
- maven项目中导入mysql中的jdbc驱动时,有以下错误出现,说明你需要更换驱动包版本
- 【iOS-知乎日报第二周总结】
- 有趣的物联网项目合集
- 《Deep residual shrinkage networks for fault diagnosis》 基于深度残差收缩网络的故障诊断(翻译与python代码)
- treeselect 清空销毁树_antd———Tree结构之探索遍历及删除
热门文章
- 制作可随身带的系统——Windows10在U盘运行 Rufus快速烧录镜像
- 【附源码】计算机毕业设计SSM线上文具销售系统
- 深度学习系列之Gaussian_YOLOv3 个人总结
- h t fad fdads
- 服务器好友系统开发,《神话》好友系统介绍 同服务器可成为好友
- 【Java】JUnit 4.13.2 警告 ‘assertEquals(double, double)‘ is deprecated 的解决方法
- 抖音开发对接之订单取消消息
- python中的(类和对象)1.5万字学习笔记
- SAP:QP01,QP02对应BAPI处理
- Unity技术手册 - 创建物体有几种方式?