madplay在FS2410下移植

本文介绍如何在FS2410开发板上移植Madplay MP3播放器,包括所需源代码包及交叉编译步骤。通过具体实例指导完成从编译到运行的全过程。

基于FS2410的MP3播放(一)
-----------Madplay的移植

By 王奔 2009-1-7


优龙科技FS2410自带的cramfs文件系统已经有了声卡驱动,所以声卡驱动的移植部分可以省略,声卡移植部分将在基于FS2410的mp3播放(二)中讲述。为了要播放MP3文件,我们需要移植一个MP3播放软件到FS2410开发板,在本文档中我使用的是Madplay,此外还可以移植madplay等其他工具。
移植前准备:我们一共需要四个源代码包,它们是:
zlib-1.2.3.tar.gz;
libid3tag-0.15.1b.tar.gz;
libmad-0.15.1b.tar.gz;
madplay-0.15.2b.tar.gz;
当然还需要交叉编译器,我使用的版本是
优龙自带的arm-linux-gcc 3.3.2.
具体的移植步骤如下:


1、在/home/Madplay 目录下新建一个install目录,作为将来所有文件的安装目录

2、交叉编译
zlib-1.2.3.tar.gz


   解压源代码
#
tar xzvf zlib-1.2.3.tar.gz

   配置安装路径:
#
./configure --prefix=/home/madplay/install

   修改Makefile文件:


CC=/usr/local/arm/3.3.2/bin/arm-linux-gcc

AR=/usr/local/arm/3.3.2/bin/arm-linux-ar rcs

RANLIB=/usr/local9/arm/3.3.2/bin/arm-linux-ranlib


   编译:
#
make

安装:
make install

编译好之后就可以在上面prefix指定的目录/home/madplay/install/lib目录下找到libz.a这个库。


3、交叉编译
libid3tag-0.15.1b

   解压源代码
#
tar xzvf libid3tag-0.15.1b


   配置
#./configure --host=arm-linux --enable-static--disable-shared --disable-debugging --prefix=/home/madplay/install LDFLAGS=-L/home/madplay/install/lib

注意:LDFLAGS=-L/home/madplay/install/lib必须要有,否则将报错无法编译,交叉编译libid3tag-0.15.1b必须已生成安装了libz.a。
编译:
#
make

安装:
make install

4、交叉编译
libmad-0.15.1b

     解压源代码
#
tar xzvf libmad-0.15.1b

配置
# ./configure --host=arm-linux --enable-static --disable-shared --disable-debugging --prefix=/home/madplay/install LDFLAGS=-L/home/madplay/install/lib

     编译:

#
make
安装:
#
make install

 
5、交叉编译
madplay-0.15.2b

    解压源代码
#
tar xzvf madplay-0.15.2b

配置
# ./configure --host=arm-linux --enable-static --disable-shared --disable-debugging --prefix=/home/madplay/install LDFLAGS=-L/home/madplay/install/lib CPPFLAGS=-I/ home/madplay/install/include

编译:

#
make

注意:此时得到的madplay是动态编译(生成的文件大约300K)的,我们要把它变成静态编译。我们需要拷贝make以后的最后一个链接的命令,在最后加上 –static ,然后安装,就可以得到静态链接的madplay程序。

然后把madplay和mp3音乐文件加入到文件系统中,下载到开发板运行就可以听到音乐了。
#
./madplay XX.mp3

内容概要:本文详细记录了对一个Android ARM64静态ELF文件中字符串加密机制的逆向分析过程。该ELF文件的所有字符串均被加密,无法通过常规strings命令或IDA直接识别。作者通过分析发现,加密字符串存储在.rodata段,其解密所需信息(包括密文地址、长度和16位密钥)保存在.data.rel.ro段的40字节描述符中。核心解密函数sub_10F408采用自反的双pass流密码算法,结合固定密钥KEY_TERM(由.data段24字节数据计算得出),实现字节级非线性、位置与长度相关的加密。文章还复现了完整的Python解密脚本,并揭示了该保护机制的本质为代码混淆而非强加密,最终成功批量解密全部956条字符串,暴露程序真实行为,如shell命令模板、设备标识篡改、网络重置等操作。此外,文中还提及未启用的自定义壳框架及其反dump设计。; 适合人群:具备逆向工程基础的安全研究人员、二进制分析人员及对ELF保护技术感兴趣的开发者。; 使用场景及目标:①学习ELF二进制中字符串加密的典型实现方式与逆向突破口;②掌握从结构识别、函数追踪到算法还原的完整逆向流程;③理解“绑定二进制”的完整性校验设计及其局限性;④实践编写IDAPython脚本自动化提取与解密敏感数据。; 阅读建议:此资源以实战案例驱动,不仅展示技术细节,更强调逆向思维与验证方法,建议读者结合IDA调试环境,逐步跟随文中步骤进行动态分析与算法验证,深入理解每一步的推理依据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值