http://bbs.pediy.com/showthread.php?p=1424746http://www.ibm.com/developerworks/cn/linux/l-qemu/

线总结下搜集来的资料吧:
http://www.xfocus.net/articles/200406/711.html  文章很老,但是依旧价值不菲!感谢前辈留下如此NB的文章。
指令集部分百度就可以了!
powerpc的东西很难找到相对应的环境,如果想做只能通过qemu 的方式安装debian
当然也有分享好的img
https://people.debian.org/~aurel32/qemu/powerpc/
上面可以下载已经安装好的虚拟机 可以通过qemu直接执行
只是里面工具不全需要下载相应的应用
apt-get install vim
apt-get install gcc
atp-get install gdb
...
当然包括其他你想要的的工具
这里提供个小的框架
char shellcode[] = {}int main(int argc, char **argv){int (*f)();f = (int (*)())&shellcode;(int)(*f)();}
想要分析的shellcode 当做字符串放在 shellcode数组里。如果只是静态分析 gcc不用加其他参数 如果是动态调试 就需要在编译的时候加上gcc -g -fno-stack-protector  参数来去除栈保护。然后基于ida 导入  跳入shellcode  IDA 按c 强制转换成指令代码,如果准备工作没问题而且你导入的的确是shellcode,那么东西就出来了。------------------------------------------以上是准备工作--------------------------------------------------------
首先我们来熟悉powerpc的指令集:
PowerPC体系结构是RISC(精简指令集计算),定义了 200 多条指令。PowerPC 之所以是 RISC,原因在于大部分指令在一个单一的周期内执行,而且是定长的32位指令,通常只执行一个单一的操作(比如将内存加载到寄存器,或者将寄存器数据存储到内存)。差不多有12种指令格式,表现为5类主要的指令:1、分支(branch)指令
2、定点(fixed-point)指令
3、浮点(floating-point)指令
4、装载和存储指令
5、处理器控制指令PowerPC的应用级寄存器分为三类:通用寄存器(general-purpose register,GPR)、浮点寄存器(floating-point register [FPR] 和浮点状态与控制寄存器 [Floating-Point Status and Control Register,FPSCR])和专用寄存器(special-purpose register,SPR)。gdb里的info registers能看到38个寄存器,下面主要介绍这几个常用的寄存器:通用寄存器的用途:r0      在函数开始(function prologs)时使用。
r1      堆栈指针,相当于ia32架构中的esp寄存器,idapro把这个寄存器反汇编标识为sp。
r2      内容表(toc)指针,idapro把这个寄存器反汇编标识为rtoc。系统调用时,它包含系统调用号。
r3      作为第一个参数和返回值。
r4-r10  函数或系统调用开始的参数。
r11     用在指针的调用和当作一些语言的环境指针。
r12     它用在异常处理和glink(动态连接器)代码。
r13     保留作为系统线程ID。
r14-r31 作为本地变量,非易失性。专用寄存器的用途:lr      链接寄存器,它用来存放函数调用结束处的返回地址。
ctr     计数寄存器,它用来当作循环计数器,会随特定转移操作而递减。
xer     定点异常寄存器,存放整数运算操作的进位以及溢出信息。
msr     机器状态寄存器,用来配置微处理器的设定。
cr      条件寄存器,它分成8个4位字段,cr0-cr7,它反映了某个算法操作的结果并且提供条件分支的机制。
(来自san的
AIX PowerPC体系结构及其溢出技术学习笔记
)
powerpc的指令是四字节一组代表一条功能指令
忘记提醒一点 导入IDA的时候 指令集一定选择powerpc
这里面有几个重点的指令
mf*r mt*r
这两个是分别是将lr(其他的基础期ctr等)保存到相应的基础 ,而且这里我有个技巧来分辨 就是已lr位对象 f代表from  t 代表to
mflr    r0 就可以理解为 from lr to r0
而mtlr r0可以理解为 to lr from r0
可能选择这东西技巧避免混淆,开始时候确实容易出问题lis     %r4, 0 # 0x1DC0
addi    %r4, %r4, 0x1DC0 # 0x1DC0
以上两条指令是对一个基础器高地位分别赋值 这点IDA还不错 可以直接在第二条指令的基础上标出该寄存器当前的值,所以不需要特别的记忆。
另外两条常用指令是
stw,lwz
比如 stw     %r5, 0x20(%sp)
是将r5 存入sp+0x20所指向的地址。
lwz与stw相对应lwz     %r5, 0x20(%sp) 是将sp+0x20指向的地址 存入r5.
bl是跳转指令
这里面shellcode 为了寻找当前的地址会有个巧妙的方法
bl      shellcode_start
shellcode_start:mflr    %r3
这里当bl shellcode_start时候会将下一条地址赋给lr
也就是说这时候lr指向的mflr %r3这条指令的地址
通过执行mflr %r3以后相当于r3指向了当前的栈或者堆地址,我们也就精确的找到了shellcode的位置。
很奇妙的想法。 

qemu 的方式安装debian 模拟powerpc相关推荐

  1. esxi 内核 linux,大娃套小娃系列-ESXI虚拟机安装Debian系统实现Docker容器

    大娃套小娃系列-ESXI虚拟机安装Debian系统实现Docker容器 2021-04-03 20:01:00 8点赞 60收藏 12评论 先介绍一下我的新小主机,具体配置是Lenovo M93P+i ...

  2. debian linux 硬盘,[Debian] 硬盘安装Debian,

    [Debian] 硬盘安装Debian, 硬盘安装Debian 环境:Windows XP ,只有一块硬盘. 1 下载Debian 只要下载第一张CD就行了,不需要下载DVD,因为一张DVD的ISO会 ...

  3. 安装debian总结以及编译linux内核

    1. 安装debian 使用unetbootin(http://unetbootin.sourceforge.net/)来创建启动盘,并且下载debian的基本包. 将磁盘进行压缩操作,并且保留出一个 ...

  4. 安装Debian 7.8 过程,以及该系统的配置过程

    最近,我给自己的电脑安装了Debian操作系统,版本7.8 stable.Debian我相信大家都能了解,它是Ubuntu的基础,Ubuntu是基于Debian的unstable开发的.我安装这个系统 ...

  5. 树莓派学习笔记—— 源代码方式安装opencv

    0.前言 本文介绍如何在树莓派中通过编译源代码的方式安装opencv,并通过一个简单的例子说明如何使用opencv. 更多内容请参考--[树莓派学习笔记--索引博文] 1.下载若干依赖项 在开始安装之 ...

  6. linux系统5.5安装教程,图解安装Debian 9.5全过程

    本文将为你带来安装Debian 9.5 GNU/Linux的教程,安装全过程图文并茂讲解.安装Debian 9.5可以把ISO文件下载下来刻录成DVD安装或者采用虚拟机安装等等方法. 一.下载Debi ...

  7. ubuntu 是基于debian gnu/linux,在 Ubuntu 或其它 GNU/Linux 系统下安装 Debian

    家有老电脑不用就折腾不止,前段时间曾折腾一台老电脑,2007年上市,只支持 i386 系统,不支持U盘启动,在 winxp 系统下装了 Ubuntu,现在突发奇想,要在 Ubuntu 上安装 Debi ...

  8. 硬盘安装Debian

    Debian的硬盘安装方式和Kali差不多,都不支持类似Ubuntu通挂载ISO的方式来安装(小白之言,有错误请指出.),只有通过刻录光盘,写入U盘或者直接通过硬盘安装.刻光盘和写入U盘安装的方式就不 ...

  9. 虚拟机安装debian教程

    本文将为你带来安装Debian 9.5 GNU/Linux的教程,安装全过程图文并茂讲解.安装Debian 9.5可以把ISO文件下载下来刻录成DVD安装或者采用虚拟机安装等等方法. 一.下载Debi ...

最新文章

  1. 如何让SD-WAN超越MPLS?
  2. ABAP--Smart Forms多语言翻译
  3. 973分成功通过CCNA。。
  4. python扫描器甄别操作系统类型_20189317 《网络攻防技术》 第三周作业
  5. 远程服务器部署spring boot 项目(centos7为例)
  6. 漫画:7种编程语言的学习曲线
  7. 2021年重庆高考成绩排名查询,2021年重庆理科高考成绩排名一分一段表,重庆高考理科成绩排名查询...
  8. $.extend(true,{},a,b)解析
  9. BZOJ.4842.[NEERC2016]Delight for a Cat(费用流)
  10. 八、Linux文本编辑器vim/vi
  11. c语言令牌桶原理,基于多 goroutine 实现令牌桶
  12. 在多媒体计算机系统中图像的颜色是,图像量化位数越大,记录图像中每个像素点的颜色种类就越多。() - 试题答案网问答...
  13. 照片尺寸对照单Microsoft Word 文档
  14. 程序员的日常生活之人艰不拆真相
  15. python2.7 error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27
  16. html电子邮件连接,html如何创建电子邮件链接
  17. Unity---Shader
  18. 干货分享|数据可视化报表制作技巧
  19. soul_dubbo
  20. 智慧城市的应用挑战,昇腾AI给出了新解法

热门文章

  1. 喀什师范学计算机学院学位论文开题报告,喀什师范学院本科生毕业论文开题报告.doc...
  2. lnmp编译安装mysql_LNMP编译安装教程
  3. python pyd_python解析.pyd文件
  4. 微型计算机釆用,计算机硬件选择题及答案.docx
  5. DPad down是哪个键_投影仪前3甲PK:双十一坚果J7S和当贝D3X投影仪选择哪个
  6. feign返回结果统一处理_SpringCloud异常处理统一封装我来做-使用篇
  7. 此计算机中未配置默认浏览器,飞火浏览器设置默认浏览器失败了怎么办-飞火浏览器设置默认浏览器的方法 - 河东软件园...
  8. multipartfile转excel_SpringMVC 上传文件 MultipartFile 转为 File的方法
  9. python执行多个py文件_【经验分享】如何同时运行多个python脚本
  10. sqlserver2008_是时候挥别 SQL Server 2008 了