1 Libdisasm SWIG README 2 3 The SWIG utility (www.swig.org) can be used to generate 4 5 6 Building SWIG Modules 7 --------------------- 8 9 make 10 make install 11 12 Make and Install both build Python, Perl, Ruby, and Tcl modules. If you 13 do not have one of these languages installed, comment out the relevant 14 target in the main Makefile. 15 16 Install uses 'sudo' to put files in the correct locations; if you 17 do not have sudo installed, change the install targets. 18 19 The Module API 20 -------------- 21 22 The OOP API 23 ----------- 24 25 26 The Python Module 27 ----------------- 28 29 To test that the module loads: 30 31 bash# python 32 >>> import x86disasm 33 >>> x86disasm.version_string() 34 '0.21-pre' 35 >>>^D 36 bash# 37 38 >>> import x86disasm 39 >>> import array 40 >>> disasm = x86disasm.X86_Disasm( ) 41 >>> tgt = open( "/tmp/a.out", "rb" ) 42 >>> tgt.seek( 0, 2 ) 43 >>> size = tgt.tell() 44 >>> tgt.seek( 0, 0 ) 45 >>> buf = array.array( 'B' ) 46 >>> buf.fromfile( tgt, size ) 47 >>> tgt.close() 48 >>> data = x86disasm.byteArray( size ) 49 >>> for i in range( size ): 50 ... data[i] = buf.pop(0) 51 ... 52 >>> del buf 53 >>> del tgt 54 >>> insn = disasm.disasm( data, size - 1, 0, 0 ) 55 >>> insn.format( x86disasm.att_syntax ) 56 'jg\t0x00000047' 57 >>> insn.format( x86disasm.raw_syntax ) 58 '0x00000000|0x00000000|2|7F 45 |||controlflow|jcc|jg|80386|General Purpose|||zero_clear sign_eq_oflow |0|0|relative|sbyte|00000047|' 59 >>> ops = insn.operand_list() 60 >>> node = ops.first() 61 >>> while node is not None: 62 ... s = node.op.format(x86disasm.raw_syntax) 63 ... print s 64 ... node = ops.next() 65 ... 66 relative|sbyte|00000047| 67 68 69 70 71 72 73 The Perl Module 74 --------------- 75 76 To test that the module loads: 77 78 bash# perl 79 use x86disasm; 80 print x86disasm::version_string() . "\n"; 81 ^D 82 0.21-pre 83 bash# 84 85 The Ruby Module 86 --------------- 87 88 To test that the module loads: 89 90 bash# irb 91 irb(main):001:0> require 'x86disasm' 92 => true 93 irb(main):002:0> X86disasm.version_string() 94 => "0.21-pre" 95 irb(main):003:0> x = X86disasm::X86_Disasm.new 96 => #<X86disasm::X86_Disasm:0xb7d624a4> 97 irb(main):004:0> x.max_register_string() 98 => 8 99 irb(main):003:0> ^D 100 bash# 101 102 The Tcl Module 103 --------------- 104 105 To test that the module loads: 106 107 bash# tclsh 108 % load /usr/lib/tcl8.3/x86disasm.so X86disasm 109 % version_string 110 0.21-pre 111 % ^D 112 bash# 113 114 % x86_init 0 NULL NULL 115 OR 116 % x86disasm dis 117 _486b0708_p_x86disasm 118 % puts "[dis cget -last_error]" 119 0 120 121 122 123 124 The Interface Files 125 ------------------- 126 127 libdisasm.i -- interface file without shadow classes 128 libdisasm_oop.i -- interface file with shadow classes 129