免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2166 | 回复: 1
打印 上一主题 下一主题

多平台的十六进制字符串反汇编小工具 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-30 22:33 |只看该作者 |倒序浏览
原文: http://blog.chinaunix.net/u/8057/showart_1270700.html

本工具
将类似 xxd 输出的 16 进制字符串反汇编成某些平台的汇编代码。

下载地址


Git Repository: http://linuxfire.com.cn/~hellwolf/git/hwdisassembler.git
WebGit: http://linuxfire.com.cn/~hellwolf/cgi-bin/gitweb.cgi?p=hwdisassembler.git;a=summary

使用 git 下载:
$ git-clone http://linuxfire.com.cn/~hellwolf/git/hwdisassembler.git

配置

例子配置文件:
$config{"x86 realmode"} = {
    gcc => 'gcc',
    objdump => 'objdump',
    objdump_Moption => 'i8086',
    byteorder => 'le',
};

$config{x86} = {
    gcc => 'gcc',
    objdump => 'objdump',
    byteorder => 'le',
};

$config{powerpc} = {
    gcc => "/data/home/hellwolf/dirs/apps/ycross/targets/powerpc-elf_freestanding/bin/powerpc-ycross-elf-gcc",
    objdump => "/data/home/hellwolf/dirs/apps/ycross/targets/powerpc-elf_freestanding/bin/powerpc-ycross-elf-objdump",
    byteorder => 'be',
};

这个配置文件将支持三个平台,x86,x86 realmode 和 powerpc。 交叉编译器请自行准备。

pipe 模式
命令格式: hwdisassembler 配置文件 pipe 平台

1. 反汇编 powerpc 代码。

$ ./hwdisassembler example.config pipe powerpc <<\EOF
> 02000000:  9421ffe0 7c0802a6  90010024 93e1001c  .!..|......$....
> 02000010:  7c3f0b78 4800068d  7c601b78 901f0008  |?.xH...|`.x....
> 02000020:  3d200200 38691e2c  809f0008 4cc63182  = ..8i.,....L.1.
> 02000030:  48001d41 48000a55  81610000 800b0004  H..AH..U.a......
> EOF

/tmp/hwdisasCXPEMMi.o:     file format elf32-powerpc

Disassembly of section .text:

00000000 <.text>:
    ...
2000000:    94 21 ff e0     stwu    r1,-32(r1)
2000004:    7c 08 02 a6     mflr    r0
2000008:    90 01 00 24     stw     r0,36(r1)
200000c:    93 e1 00 1c     stw     r31,28(r1)
2000010:    7c 3f 0b 78     mr      r31,r1
2000014:    48 00 06 8d     bl      0x20006a0
2000018:    7c 60 1b 78     mr      r0,r3
200001c:    90 1f 00 08     stw     r0,8(r31)
2000020:    3d 20 02 00     lis     r9,512
2000024:    38 69 1e 2c     addi    r3,r9,7724
2000028:    80 9f 00 08     lwz     r4,8(r31)
200002c:    4c c6 31 82     crclr   4*cr1+eq
2000030:    48 00 1d 41     bl      0x2001d70
2000034:    48 00 0a 55     bl      0x2000a88
2000038:    81 61 00 00     lwz     r11,0(r1)
200003c:    80 0b 00 04     lwz     r0,4(r11)

2. 反汇编一段来自 debug 程序的 x86 realmode 代码

$ echo BA 0C 01 B4 09 CD 21 B8 00 4C CD 21 | ./hwdisassembler example.config pipe "x86 realmode"

/tmp/hwdisasKMpDD35.o:     file format elf32-i386


Disassembly of section .text:

00000000 <.text>:
   0:    ba 0c 01                 mov    $0x10c,%dx
   3:    b4 09                    mov    $0x9,%ah
   5:    cd 21                    int    $0x21
   7:    b8 00 4c                 mov    $0x4c00,%ax
   a:    cd 21                    int    $0x21

cgi 模式
将类似下面的程序拷贝到cgi目录即可:#!/bin/sh/data/home/hellwolf/mydoc/prog/hwdisassembler/hwdisassembler /data/home/hellwolf/mydoc/prog/hwdisassembler/config.example cgi

论坛徽章:
0
2 [报告]
发表于 2008-10-03 11:07 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP