- 博客(299)
- 资源 (9)
- 收藏
- 关注
原创 java版hexdump
/ 每个未用字节用三个空格填充。// ASCII 可打印字符(非打印字符显示为`.`)// 1. 计算当前行处理的字节数(最多16字节)// 2. 格式化地址(例如: 00000000)// 十六进制部分(每字节两个字符)// 4. 填充剩余空格(不足16字节的行)// 在第八个字节后加空格分隔。* 生成类似 hexdump 的十六进制转储格式。// 3. 生成十六进制部分。// 5. 拼接最终行。// 示例:转储字符串。// 示例:转储文件。
2025-03-15 10:13:25
376
原创 thumb tbb指令理解
/跳转位置计算 new_pc = pc+4 (jpt_1A7C) ......1 step。//比如 r4=1, new_pc = new_pc + 4*2 = loc_1A84x。//比如 r4=0, new_pc = new_pc + 2*2 = loc_1A84。//PC = PC + 4 流水线原因 指到jpt_1A7C 跳转表的起始位置。TBB [PC,R4] //TBB指令占4字节。
2024-11-27 18:52:42
336
1
原创 wav文件生成代码
/ = 数据传输速率(每秒平均字节数):声道数×采样频率×每样本的数据位数/8。// = 每采样点字节数 : 声道数×位数/8。// = 常见的 WAV 文件使用 PCM 脉冲编码调制格式,该数值通常为 1。// = 采样位数: 存储每个采样值所用的二进制数位数, 8 | 16。
2024-11-27 11:57:28
392
原创 android 蓝牙遥控器配对过程的一点理解
/LE_KEY_PENC 的内容是 遥控器算出来,并传送给主机的 主机保存至 /data/misc/bluedroid/bt_config.conf。//正确后 用主机的随机数前面8字节加遥控器的随机数的前面8字节组合进行aes128 (key=16 bytes 0)加密。//得出的值作为配对key?//主机发送随机数 和 用随机数加密的aes128 (key=16 bytes 0)给遥控器。//遥控器发送随机数 和 用随机数加密的aes128 (key=16 bytes 0)给主机。
2024-09-20 15:00:06
825
原创 hexdump -C 实现
/x6 t1 临时寄存器 否。//x28-x31 t3-t6 临时寄存器 否。//x8 s0/fp 该寄存器需要被调函数予以保存 是。//x18-x27 s2-s11 该寄存器需要被调函数予以保存 是。//x5 t0 临时寄存器,或者用作替代链接寄存器 否。
2024-07-15 20:11:41
950
原创 ida risc-V 增加几条指令
import sys=0x00:else:#06d05f7b#104 B6 3C#E0 8962else:else:
2024-07-10 15:44:42
871
1
原创 crc16 算法
/ 协议前位msgToken 计算初值XFFFF,数据部分计算初值:协议头前位的crc(protobuf数据最后要加CRC)input_invert:输入值是否反转。ouput_invert:输出值是否反转。puchMsg:开始校验的数据的起始地址。Input: wCRCin:CRC16算法的初始值。usDataLen:校验的数据长度。if(input_invert)//输入值反转。Description: 通用的位CRC校验算法。// 计算给定长度数据的 16 位 CRC。
2024-06-02 23:16:03
1095
原创 memset 的x86 32bit实现函数
jnz loop;如果ecx寄存器的值不为零,跳转到loop标签处继续执行。stosd;将eax寄存器的值传送到edi寄存器所指向的内存单元中。dec ecx;将ecx寄存器的值减一。
2024-04-01 16:35:43
300
原创 repne scasb strlen的x86 32bit实现函数
循环开始,ecx减一,搜索edi开始的字符串,匹配al的值,没有匹配继续循环,匹配到退出循环。匹配串结束字符 al=='\0'lea eax, [eax-1];减去'\0'的那一次计数。eax为字符串的长度,作为函数的返回值输出。
2024-04-01 16:18:39
214
原创 x86 32bits c && asm helloworld
起始位置(h): 00000000, 结束位置(h): 000003FF, 长度(h): 00000400 *//* 不受影响的寄存器 */:"=g"(a) /* 输出 */: /* 输入 *//* 未命名1 (2024/3/18 14:33:34)
2024-03-22 08:01:41
631
原创 ida arm64 base function
/ x3// x5// x1__int64 i;// x0v7!= --i;;return a1;__int64 i;// x3a3!= i;++i )__int64 v3;// x4int v5;// w3int v6;// w5v3 = 0i64;do。
2024-03-05 23:36:14
700
原创 QEMU ARM64 Uboot
/传递进来的参数 依次压入堆栈 x1-x7 c8-d8-e8-f8-0x100-[x0 栈顶指针的位置]//传递进来的参数 依次压入堆栈 x1-x7 c8-d8-e8-f8-0x100-[x0 栈顶指针的位置]//7*8=56 0x38 0xFFFFFFC8 + 0x38 = 0x00000000 即-0x38。//函数的参数如果是8个以内(包含8个) 用x0-x7来传递 (param0-param7)//SP 64bit 保存栈指针,使用 SP/WSP来进行对SP寄存器的访问。
2024-03-03 00:32:11
1162
原创 mfc 疑难杂症之一
1.xxxx处的第一机会异常: 0xC0000005: 读取位置 0x00000004 时发生访问冲突。2.不定时程序闪退 访问违例 程序定位到 main处。查自己写的代码,坑定有问题。
2024-02-23 06:41:27
963
原创 uboot 模拟 pc BIOS的 跑码诊断
/字符串指针不为空时加载一个字符,并且字符串指针后移一个字符位置。//字符串指针不为空时测试加载的字符是否为串结束字符。//进入就打印一个字符,然后判断是否继续打印。//恢复现场,并返回。//串口0输出一个字符。//不是串结束字符,继续打印下一字符。//如果是换行符的话,继续打印。//字符串指针为空时不执行此条命令。//字符串指针为空时执行下一条指令。//字符串指针为空时不执行此条命令。//是结束字符,执行下一条指令。
2024-02-03 18:33:01
703
原创 android 4.4 audio 框架
AudioTrackServerProxy:: obtainBuffer()从 audio buffer 获取连续的填充了数据的 buffer;AudioTrackClientProxy:: releaseBuffer ()将填充了数据的 buffer 放回 audio buffer。AudioTrackServerProxy:: releaseBuffer ()将使用完的空buffer 放回 audio buffer。从AudioTrack 写入的buff中取出 解码后的pcm数据。
2024-02-02 15:41:53
678
原创 qemu gdb debug aarch64 uboot
s 选项告诉 qemu-system-aarch64 启动内置的 gdb-server, 监听在 TCP 端口 1234 上。u表示显示单位:b(byte), h(halfword), w(word), g(giant, 8 bytes)-S 选项告诉 qemu-system-aarch64 不要启动程序执行,等待 gdb 的指令。qemu-system-aarch64 等待 gdb 客户端连接它,发送进一步的指令。f表示格式:x(hex), d(decimal), c(char)7.查看寄存器的内容。
2023-09-16 22:55:48
394
原创 用实例理解c语言的多参数传递过程
/传递进来的参数 依次压入堆栈 x1-x7 c8-d8-e8-f8-0x100-[x0 栈顶指针的位置]//测试 sp+0x38 0xFFFFFFC8 & 0x1F 是否等于0,等于0的话跳转到loc_3718。//传递进来的参数 依次压入堆栈 x1-x7 c8-d8-e8-f8-0x100-[x0 栈顶指针的位置]//7*8=56 0x38 0xFFFFFFC8 + 0x38 = 0x00000000 即-0x38。//[sp+0x38] & 0x1f 不等于0, 自加8。
2023-09-16 22:03:14
422
原创 qemu 模拟stm32f103RB uart && system tick
其实就是用 103的bin文件,qemu用的模拟器是205的。system tick属于芯片核里面的,估计寄存器地址一样。因为keil中的代码模拟的是stm32f103,其串口的基地址为 0x40013800,需要修改。keil4.72.0.0 设置输出 bin asm。
2023-09-02 22:54:01
1104
原创 crc16
RC16-CCITT是一个16位的循环冗余校验(CRC)算法,它是由国际电报电话咨询委员会(CCITT)制定的。处理顺序(Processing Order):按照数据的字节顺序(从高位到低位或从低位到高位)依次处理每一个字节,每个字节的最高位先处理。多项式生成器(Polynomial Generator): x^16 + x^12 + x^5 + 1。crc16_ccitt(0x200 个 0xff) = 0x7FA1。多项式: 1021 x^16 + x^12 + x^5 + 1。
2023-07-18 22:09:33
284
1
原创 android p java 调用栈输出
import android.os.Debug; Log.w(mTag, "makeDhcpClientx: " + Debug.getCallers(50));
2023-04-19 17:00:28
191
原创 sed 细节理解 . && .*
第2个 / 后面跟了69999, 第2次命中的内容为 /69999,碰到 \7停止。第一个 / 后面跟了一个 /,没有命中,但是后面不是 .*,是 *带 .* 匹配上第一个之后,后面的内容不再分析,直接匹配上。第2个/后面匹配上了,整句话后面不再分析,直接匹配。第一个/后面跟 /,没有匹配上 注意有一个.不带 .的* 会逐个字节分析匹配字符串。[^\\/] ^ 不是 \ 或者 /12345 不是以 /开头 没有替换。所以此次命中的就是1个 /,|\|| 替换为 |
2023-02-05 08:40:07
573
AXMLPrinter2.rar
2020-08-21
systemd.rar
2019-12-19
apktool最新版
2018-06-23
stm32 dfu文件生成 命令行工具
2018-04-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人