文章列表
 
您正在查看 "Powerpc" 分类下的文章

2009-05-27 8:50

前面介绍了内核的编译。最后生成的内核镜象有两种zImage以及uImage。其中zImage下载到目标板中后,可以直接用uboot

 
2009-03-09 16:12
随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开发中。面对日益庞大的 Linux 内核源代码,开发者在完成自己的内核代码后,都将面临着同样的问题,即如何将源代码融入到 Linux 内核中,增加相应的 Linux 配置选项,并最终被编译进 Linux 内核。这就需要了解 Linux 的内核配置系统。

随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开

 
2009-03-09 15:57


 
2008-12-29 20:27
This script must be executed as root in the directory where the sources 
(binutils-2.17.tar.bz2, gcc-4.1.1.tar.bz2 and newlib-1.14.0.tar.gz) have
been extracted.
-------------------------------------
#!/bin/bash

set -e

mkdir -p /usr/local/ppc
mkdir -p build-ppc/binutils
mkdir -p build-ppc/gcc
mkdir -p build-ppc/newlib

cd build-ppc/binutils
../../binutils-2.17/configure \
--target=ppc-elf \
--prefix=/us
 
2008-10-23 20:55

Gcc版本:

liubin@liubin-desktop:~/work/other$ ppc-elf-gcc -v

Using built-in specs.

Target: ppc-elf

Configured with: ../../gcc-4.1.1/configure --target=ppc-elf --prefix=/usr/local/ppc --enable-multilib --with-float=soft --enable-languages=c,c++ --with-newlib --with-headers=../../newlib-1.14.0/newlib/libc/includ

 
2008-10-23 10:27
7 0x0 0
r8 0x60000000 1610612736
r9 0x60002449 1610622025
r10 0x0 0
r11 0x600026c8 1610622664
r12 0x100005ac 268436908
r13 0xdeadbeef -559038737
r14 0x2 2
r15 0x2ff22264 804397668
r16 0x2ff22270 804397680
r17 0x0 0
r18 0xdeadbeef -559038737
r19 0xdeadbeef -559038737
r20 0xdeadbeef -559038737
r21 0xdeadbeef -559038737
r22 0xdeadbeef -559038737
r23 0xdeadbeef -559038737
r24 0x
 
2008-10-23 10:26
lr寄存器的内容已经改写成0x41424344,接着看程序流程:(gdb) ni
0x10000570 in main ()
1: x/i $pc 0x10000570 <main+36>: mr r3,r0
(gdb)
0x10000574 in main ()
1: x/i $pc 0x10000574 <main+40>: lwz r1,0(r1)
(gdb)
0x10000578 in main ()
1: x/i $pc 0x10000578 <main+44>: lwz r0,8(r1)
(gdb)
0x1000057c in main ()
1: x/i $pc 0x1000057c <main+48>: mtlr r0
(gdb)
0x10000580 in main ()
1: x/i $pc 0x10000580 <
 
2008-10-23 10:25
回的时候就会跳到我们指定的地址执行;AIX PowerPC要覆盖到下一个栈帧保存lr的地址,当函数返回的时候也会跳到我们指定的地址执行。文字描述无法实际理解,自己动手一下才会真正领会,下面 用一个简单的程序走一遍流程:-bash-2.05b$ cat simple_overflow.c
/* simple_overflow.c
*
* Simple program to demonstrate buffer overflows
* on the PowerPC architecture.
*/
#include <stdio.h>
#include <string.h>
char largebuff[] =
"1234512345123451234
 
2008-10-23 10:25
svca 0
1000056c: 2f 62 69 6e cmpi 6,r2,26990
10000570: 2f 73 68 00 cmpi 6,r19,26624
... 可以看到有好几条指令的opcode包含了0,这对于strcpy等字符串操作函数导致的溢出会被截断,所以需要编码或者相应指令的替换。不过我们注意到 svca指令中间两个字节包含了0,幸好这两个字节是保留字段,并没有被使用,可以用非0字节代替。PowerPC空指令nop的opcode是 0x60000000,后面三个字节的0也是保留项,也可以用0x60606060来代替。lsd提供了一个可用的shellcode:/* shellcode.c
*
* ripped
 
2008-10-23 10:24

一、 熟悉PowerPC体系及其精简指令集计算PowerPC体系结构是RISC(精简指令集计算),定义了 200 多条指令。PowerPC 之所以是 RISC,原因在于大部分指令在一个单一的周期内执行,而且是定长的32位指令,通常只执行一个单一的操作(比如将内存加载到寄存器,或者将寄存器数据存 储到内存)。差不多有12种指令格式,表现为5类主要的指令:1、分支(branch)指令
2、定点(fixed-point)指令
3、浮点(floating-point)指令
4、装载和存储指令
5、 处理器控制指令PowerPC的应用级寄存器分为三类
 
   
 
 
文章分类
 
 
 
 
 
 
c/c++(24)
 
 
Gcc(10)
 
Read(8)
 
Edit(15)
 
 
 
Net(3)
 
   
 
文章存档
 
     
 
最新文章评论
  

刚才的评论忘点分享了
 

写的太好了,忍不住赞一个。作为初学者,很多东西不清楚,就需要这样的文章来整理一
 

其实我就是那个能运行就万事大吉的菜鸟,受教了~
 

需要,谢谢
 

原创?怎么看到相关文章都是这一篇呢~~
   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu