上一页 1 ··· 67 68 69 70 71
摘要: ARM硬件alignment的约束是:1. 一次访问4字节内容,该内容的起始地址必须是4字节对齐的位置上;2. 一次访问2字节内容,该内容的起始地址必须是2字节对齐的位置上;3. 单字节的没有这个问题,就不用考虑啦。特别解释一下Struct中的对齐问题:1. 对齐的时候,编译器会为我们补充padding,从而达到对齐的要求。比如:[代码]编译出来,内存布局是这样的:2. 加上__packed关键字(gcc arm编译器这个关键字是__attribute__((__packed__)) ),编译器就不会为我们添加padding,从而节省内存。这样,当发生unalignment address被访 阅读全文
posted @ 2010-12-09 18:45 super119 阅读(541) 评论(0) 推荐(0) 编辑
摘要: mencoder的命令行看起来有点吓人,所以用ffmpeg。事实上,现在绝大部分的所谓转换软件都是基于ffmpeg的,mencoder也用的是ffmpeg。ffmpeg就是做mplayer的组织做的。所以,为什么很多软件转换不了某些文件和codec呢?就因为ffmpeg不支持。比如:wmvv3(wmv9) encoding,ffmpeg现在不支持,所以,基本上现在能看到的转换软件都不支持,只能支持wmvv1(wmv7), wmvv2(wmv8)的decode和encode。以下是一些步骤和关键点:1. 自己编译ffmpeg。Ubuntu reposiroty中的ffmpeg功能不全(主要是看怎 阅读全文
posted @ 2010-12-09 18:24 super119 阅读(1741) 评论(0) 推荐(0) 编辑
摘要: glibc提供了backtrace这个库函数,可以用来打印call stack。比如我们可以在程序中注册常见的一些signal,比如SIGSEGMENT, SIGPIPE,然后在这些信号的回调函数中,利用backtrace打印出call stack,这样debug就非常的方便。backtrace的使用很简单,使用man手册中的Example代码即可,例如: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 #define SIZE 100 8 9 void dump_stack()10 {11... 阅读全文
posted @ 2010-12-09 17:09 super119 阅读(1540) 评论(0) 推荐(0) 编辑
摘要: Call glibc/program functions in GDBIn GDB, we can use "call" command to execute functions, for example:call close(1)This can be used to close the target program's stdout. Similiarily, we can call program's own functions by call command.By executing functions in GDB, we can hack the program to modify 阅读全文
posted @ 2010-12-09 16:47 super119 阅读(4840) 评论(0) 推荐(0) 编辑
上一页 1 ··· 67 68 69 70 71