metasm 1.0.0 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (276) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +3 -0
  4. data/.gitignore +3 -0
  5. data/.hgtags +3 -0
  6. data/Gemfile +3 -0
  7. data/INSTALL +61 -0
  8. data/LICENCE +458 -0
  9. data/README +29 -21
  10. data/Rakefile +10 -0
  11. data/TODO +10 -12
  12. data/doc/code_organisation.txt +3 -1
  13. data/doc/core/DynLdr.txt +247 -0
  14. data/doc/core/ExeFormat.txt +43 -0
  15. data/doc/core/Expression.txt +220 -0
  16. data/doc/core/GNUExports.txt +27 -0
  17. data/doc/core/Ia32.txt +236 -0
  18. data/doc/core/SerialStruct.txt +108 -0
  19. data/doc/core/VirtualString.txt +145 -0
  20. data/doc/core/WindowsExports.txt +61 -0
  21. data/doc/core/index.txt +1 -0
  22. data/doc/style.css +6 -3
  23. data/doc/usage/debugger.txt +327 -0
  24. data/doc/usage/index.txt +1 -0
  25. data/doc/use_cases.txt +2 -2
  26. data/metasm.gemspec +23 -0
  27. data/{lib/metasm.rb → metasm.rb} +15 -3
  28. data/{lib/metasm → metasm}/compile_c.rb +15 -9
  29. data/metasm/cpu/arc.rb +8 -0
  30. data/metasm/cpu/arc/decode.rb +404 -0
  31. data/metasm/cpu/arc/main.rb +191 -0
  32. data/metasm/cpu/arc/opcodes.rb +588 -0
  33. data/metasm/cpu/arm.rb +14 -0
  34. data/{lib/metasm → metasm/cpu}/arm/debug.rb +2 -2
  35. data/{lib/metasm → metasm/cpu}/arm/decode.rb +15 -18
  36. data/{lib/metasm → metasm/cpu}/arm/encode.rb +23 -8
  37. data/{lib/metasm → metasm/cpu}/arm/main.rb +3 -6
  38. data/metasm/cpu/arm/opcodes.rb +324 -0
  39. data/{lib/metasm → metasm/cpu}/arm/parse.rb +25 -13
  40. data/{lib/metasm → metasm/cpu}/arm/render.rb +2 -2
  41. data/metasm/cpu/arm64.rb +15 -0
  42. data/metasm/cpu/arm64/debug.rb +38 -0
  43. data/metasm/cpu/arm64/decode.rb +285 -0
  44. data/metasm/cpu/arm64/encode.rb +41 -0
  45. data/metasm/cpu/arm64/main.rb +105 -0
  46. data/metasm/cpu/arm64/opcodes.rb +232 -0
  47. data/metasm/cpu/arm64/parse.rb +20 -0
  48. data/metasm/cpu/arm64/render.rb +95 -0
  49. data/{lib/metasm/mips/compile_c.rb → metasm/cpu/bpf.rb} +4 -2
  50. data/metasm/cpu/bpf/decode.rb +110 -0
  51. data/metasm/cpu/bpf/main.rb +60 -0
  52. data/metasm/cpu/bpf/opcodes.rb +81 -0
  53. data/metasm/cpu/bpf/render.rb +30 -0
  54. data/{lib/metasm/ppc.rb → metasm/cpu/cy16.rb} +2 -4
  55. data/metasm/cpu/cy16/decode.rb +247 -0
  56. data/metasm/cpu/cy16/main.rb +63 -0
  57. data/metasm/cpu/cy16/opcodes.rb +78 -0
  58. data/metasm/cpu/cy16/render.rb +30 -0
  59. data/metasm/cpu/dalvik.rb +11 -0
  60. data/{lib/metasm → metasm/cpu}/dalvik/decode.rb +34 -34
  61. data/{lib/metasm → metasm/cpu}/dalvik/main.rb +71 -4
  62. data/{lib/metasm → metasm/cpu}/dalvik/opcodes.rb +21 -12
  63. data/{lib/metasm/mips.rb → metasm/cpu/ebpf.rb} +3 -4
  64. data/metasm/cpu/ebpf/debug.rb +61 -0
  65. data/metasm/cpu/ebpf/decode.rb +142 -0
  66. data/metasm/cpu/ebpf/main.rb +58 -0
  67. data/metasm/cpu/ebpf/opcodes.rb +97 -0
  68. data/metasm/cpu/ebpf/render.rb +36 -0
  69. data/metasm/cpu/ia32.rb +17 -0
  70. data/{lib/metasm → metasm/cpu}/ia32/compile_c.rb +23 -9
  71. data/{lib/metasm → metasm/cpu}/ia32/debug.rb +44 -6
  72. data/{lib/metasm → metasm/cpu}/ia32/decode.rb +342 -128
  73. data/{lib/metasm → metasm/cpu}/ia32/decompile.rb +75 -53
  74. data/{lib/metasm → metasm/cpu}/ia32/encode.rb +19 -13
  75. data/{lib/metasm → metasm/cpu}/ia32/main.rb +66 -8
  76. data/metasm/cpu/ia32/opcodes.rb +1424 -0
  77. data/{lib/metasm → metasm/cpu}/ia32/parse.rb +55 -17
  78. data/{lib/metasm → metasm/cpu}/ia32/render.rb +32 -5
  79. data/metasm/cpu/mcs51.rb +8 -0
  80. data/metasm/cpu/mcs51/decode.rb +99 -0
  81. data/metasm/cpu/mcs51/main.rb +87 -0
  82. data/metasm/cpu/mcs51/opcodes.rb +120 -0
  83. data/metasm/cpu/mips.rb +14 -0
  84. data/metasm/cpu/mips/debug.rb +42 -0
  85. data/{lib/metasm → metasm/cpu}/mips/decode.rb +59 -38
  86. data/{lib/metasm → metasm/cpu}/mips/encode.rb +4 -3
  87. data/{lib/metasm → metasm/cpu}/mips/main.rb +13 -6
  88. data/{lib/metasm → metasm/cpu}/mips/opcodes.rb +87 -18
  89. data/{lib/metasm → metasm/cpu}/mips/parse.rb +1 -1
  90. data/{lib/metasm → metasm/cpu}/mips/render.rb +1 -1
  91. data/{lib/metasm/dalvik.rb → metasm/cpu/msp430.rb} +1 -1
  92. data/metasm/cpu/msp430/decode.rb +243 -0
  93. data/metasm/cpu/msp430/main.rb +62 -0
  94. data/metasm/cpu/msp430/opcodes.rb +101 -0
  95. data/metasm/cpu/openrisc.rb +11 -0
  96. data/metasm/cpu/openrisc/debug.rb +106 -0
  97. data/metasm/cpu/openrisc/decode.rb +182 -0
  98. data/metasm/cpu/openrisc/decompile.rb +350 -0
  99. data/metasm/cpu/openrisc/main.rb +70 -0
  100. data/metasm/cpu/openrisc/opcodes.rb +109 -0
  101. data/metasm/cpu/openrisc/render.rb +37 -0
  102. data/{lib/metasm → metasm/cpu}/pic16c/decode.rb +6 -7
  103. data/{lib/metasm → metasm/cpu}/pic16c/main.rb +0 -0
  104. data/{lib/metasm → metasm/cpu}/pic16c/opcodes.rb +1 -1
  105. data/metasm/cpu/ppc.rb +11 -0
  106. data/{lib/metasm → metasm/cpu}/ppc/decode.rb +18 -37
  107. data/{lib/metasm → metasm/cpu}/ppc/decompile.rb +3 -3
  108. data/{lib/metasm → metasm/cpu}/ppc/encode.rb +2 -2
  109. data/{lib/metasm → metasm/cpu}/ppc/main.rb +23 -18
  110. data/{lib/metasm → metasm/cpu}/ppc/opcodes.rb +11 -6
  111. data/metasm/cpu/ppc/parse.rb +55 -0
  112. data/metasm/cpu/python.rb +8 -0
  113. data/metasm/cpu/python/decode.rb +116 -0
  114. data/metasm/cpu/python/main.rb +36 -0
  115. data/metasm/cpu/python/opcodes.rb +180 -0
  116. data/{lib/metasm → metasm/cpu}/sh4.rb +1 -1
  117. data/{lib/metasm → metasm/cpu}/sh4/decode.rb +50 -23
  118. data/{lib/metasm → metasm/cpu}/sh4/main.rb +38 -27
  119. data/{lib/metasm → metasm/cpu}/sh4/opcodes.rb +7 -8
  120. data/metasm/cpu/st20.rb +9 -0
  121. data/metasm/cpu/st20/decode.rb +173 -0
  122. data/metasm/cpu/st20/decompile.rb +283 -0
  123. data/metasm/cpu/st20/main.rb +37 -0
  124. data/metasm/cpu/st20/opcodes.rb +140 -0
  125. data/{lib/metasm/arm.rb → metasm/cpu/webasm.rb} +4 -5
  126. data/metasm/cpu/webasm/debug.rb +31 -0
  127. data/metasm/cpu/webasm/decode.rb +321 -0
  128. data/metasm/cpu/webasm/decompile.rb +386 -0
  129. data/metasm/cpu/webasm/encode.rb +104 -0
  130. data/metasm/cpu/webasm/main.rb +81 -0
  131. data/metasm/cpu/webasm/opcodes.rb +214 -0
  132. data/metasm/cpu/x86_64.rb +15 -0
  133. data/{lib/metasm → metasm/cpu}/x86_64/compile_c.rb +40 -25
  134. data/{lib/metasm → metasm/cpu}/x86_64/debug.rb +4 -4
  135. data/{lib/metasm → metasm/cpu}/x86_64/decode.rb +58 -15
  136. data/{lib/metasm → metasm/cpu}/x86_64/encode.rb +59 -28
  137. data/{lib/metasm → metasm/cpu}/x86_64/main.rb +18 -6
  138. data/metasm/cpu/x86_64/opcodes.rb +138 -0
  139. data/{lib/metasm → metasm/cpu}/x86_64/parse.rb +12 -4
  140. data/metasm/cpu/x86_64/render.rb +35 -0
  141. data/metasm/cpu/z80.rb +9 -0
  142. data/metasm/cpu/z80/decode.rb +286 -0
  143. data/metasm/cpu/z80/main.rb +67 -0
  144. data/metasm/cpu/z80/opcodes.rb +224 -0
  145. data/metasm/cpu/z80/render.rb +48 -0
  146. data/{lib/metasm/os/main.rb → metasm/debug.rb} +201 -407
  147. data/{lib/metasm → metasm}/decode.rb +104 -24
  148. data/{lib/metasm → metasm}/decompile.rb +804 -478
  149. data/{lib/metasm → metasm}/disassemble.rb +385 -170
  150. data/{lib/metasm → metasm}/disassemble_api.rb +684 -105
  151. data/{lib/metasm → metasm}/dynldr.rb +231 -138
  152. data/{lib/metasm → metasm}/encode.rb +20 -5
  153. data/{lib/metasm → metasm}/exe_format/a_out.rb +9 -6
  154. data/{lib/metasm → metasm}/exe_format/autoexe.rb +3 -0
  155. data/{lib/metasm → metasm}/exe_format/bflt.rb +57 -27
  156. data/{lib/metasm → metasm}/exe_format/coff.rb +35 -7
  157. data/{lib/metasm → metasm}/exe_format/coff_decode.rb +70 -23
  158. data/{lib/metasm → metasm}/exe_format/coff_encode.rb +24 -22
  159. data/{lib/metasm → metasm}/exe_format/dex.rb +26 -8
  160. data/{lib/metasm → metasm}/exe_format/dol.rb +1 -0
  161. data/{lib/metasm → metasm}/exe_format/elf.rb +108 -58
  162. data/{lib/metasm → metasm}/exe_format/elf_decode.rb +202 -36
  163. data/{lib/metasm → metasm}/exe_format/elf_encode.rb +126 -32
  164. data/metasm/exe_format/gb.rb +65 -0
  165. data/metasm/exe_format/javaclass.rb +424 -0
  166. data/{lib/metasm → metasm}/exe_format/macho.rb +218 -16
  167. data/{lib/metasm → metasm}/exe_format/main.rb +28 -3
  168. data/{lib/metasm → metasm}/exe_format/mz.rb +2 -0
  169. data/{lib/metasm → metasm}/exe_format/nds.rb +7 -4
  170. data/{lib/metasm → metasm}/exe_format/pe.rb +96 -11
  171. data/metasm/exe_format/pyc.rb +167 -0
  172. data/{lib/metasm → metasm}/exe_format/serialstruct.rb +67 -14
  173. data/{lib/metasm → metasm}/exe_format/shellcode.rb +7 -3
  174. data/metasm/exe_format/shellcode_rwx.rb +114 -0
  175. data/metasm/exe_format/swf.rb +205 -0
  176. data/metasm/exe_format/wasm.rb +402 -0
  177. data/{lib/metasm → metasm}/exe_format/xcoff.rb +7 -7
  178. data/metasm/exe_format/zip.rb +335 -0
  179. data/metasm/gui.rb +13 -0
  180. data/{lib/metasm → metasm}/gui/cstruct.rb +35 -41
  181. data/{lib/metasm → metasm}/gui/dasm_coverage.rb +11 -11
  182. data/{lib/metasm → metasm}/gui/dasm_decomp.rb +177 -114
  183. data/{lib/metasm → metasm}/gui/dasm_funcgraph.rb +0 -0
  184. data/metasm/gui/dasm_graph.rb +1754 -0
  185. data/{lib/metasm → metasm}/gui/dasm_hex.rb +16 -12
  186. data/{lib/metasm → metasm}/gui/dasm_listing.rb +43 -28
  187. data/{lib/metasm → metasm}/gui/dasm_main.rb +360 -77
  188. data/{lib/metasm → metasm}/gui/dasm_opcodes.rb +5 -19
  189. data/{lib/metasm → metasm}/gui/debug.rb +109 -34
  190. data/{lib/metasm → metasm}/gui/gtk.rb +174 -44
  191. data/{lib/metasm → metasm}/gui/qt.rb +14 -4
  192. data/{lib/metasm → metasm}/gui/win32.rb +180 -43
  193. data/{lib/metasm → metasm}/gui/x11.rb +59 -59
  194. data/{lib/metasm → metasm}/main.rb +421 -286
  195. data/metasm/os/emulator.rb +175 -0
  196. data/{lib/metasm/os/remote.rb → metasm/os/gdbremote.rb} +146 -54
  197. data/{lib/metasm → metasm}/os/gnu_exports.rb +1 -1
  198. data/{lib/metasm → metasm}/os/linux.rb +628 -151
  199. data/metasm/os/main.rb +335 -0
  200. data/{lib/metasm → metasm}/os/windows.rb +151 -58
  201. data/{lib/metasm → metasm}/os/windows_exports.rb +141 -0
  202. data/{lib/metasm → metasm}/parse.rb +49 -36
  203. data/{lib/metasm → metasm}/parse_c.rb +405 -246
  204. data/{lib/metasm → metasm}/preprocessor.rb +71 -41
  205. data/{lib/metasm → metasm}/render.rb +14 -38
  206. data/misc/hexdump.rb +4 -3
  207. data/misc/lint.rb +58 -0
  208. data/misc/objdiff.rb +4 -1
  209. data/misc/objscan.rb +1 -1
  210. data/misc/openrisc-parser.rb +79 -0
  211. data/misc/txt2html.rb +9 -7
  212. data/samples/bindiff.rb +3 -4
  213. data/samples/dasm-plugins/bindiff.rb +15 -0
  214. data/samples/dasm-plugins/bookmark.rb +133 -0
  215. data/samples/dasm-plugins/c_constants.rb +57 -0
  216. data/samples/dasm-plugins/colortheme_solarized.rb +125 -0
  217. data/samples/dasm-plugins/cppobj_funcall.rb +60 -0
  218. data/samples/dasm-plugins/dasm_all.rb +70 -0
  219. data/samples/dasm-plugins/demangle_cpp.rb +31 -0
  220. data/samples/dasm-plugins/deobfuscate.rb +251 -0
  221. data/samples/dasm-plugins/dump_text.rb +35 -0
  222. data/samples/dasm-plugins/export_graph_svg.rb +86 -0
  223. data/samples/dasm-plugins/findgadget.rb +75 -0
  224. data/samples/dasm-plugins/hl_opcode.rb +32 -0
  225. data/samples/dasm-plugins/hotfix_gtk_dbg.rb +19 -0
  226. data/samples/dasm-plugins/imm2off.rb +34 -0
  227. data/samples/dasm-plugins/match_libsigs.rb +93 -0
  228. data/samples/dasm-plugins/patch_file.rb +95 -0
  229. data/samples/dasm-plugins/scanfuncstart.rb +36 -0
  230. data/samples/dasm-plugins/scanxrefs.rb +29 -0
  231. data/samples/dasm-plugins/selfmodify.rb +197 -0
  232. data/samples/dasm-plugins/stringsxrefs.rb +28 -0
  233. data/samples/dasmnavig.rb +1 -1
  234. data/samples/dbg-apihook.rb +24 -9
  235. data/samples/dbg-plugins/heapscan.rb +283 -0
  236. data/samples/dbg-plugins/heapscan/compiled_heapscan_lin.c +155 -0
  237. data/samples/dbg-plugins/heapscan/compiled_heapscan_win.c +128 -0
  238. data/samples/dbg-plugins/heapscan/graphheap.rb +616 -0
  239. data/samples/dbg-plugins/heapscan/heapscan.rb +709 -0
  240. data/samples/dbg-plugins/heapscan/winheap.h +174 -0
  241. data/samples/dbg-plugins/heapscan/winheap7.h +307 -0
  242. data/samples/dbg-plugins/trace_func.rb +214 -0
  243. data/samples/disassemble-gui.rb +48 -7
  244. data/samples/disassemble.rb +31 -6
  245. data/samples/dump_upx.rb +24 -12
  246. data/samples/dynamic_ruby.rb +35 -27
  247. data/samples/elfencode.rb +15 -0
  248. data/samples/emubios.rb +251 -0
  249. data/samples/emudbg.rb +127 -0
  250. data/samples/exeencode.rb +6 -5
  251. data/samples/factorize-headers-peimports.rb +1 -1
  252. data/samples/lindebug.rb +186 -391
  253. data/samples/metasm-shell.rb +68 -57
  254. data/samples/peldr.rb +2 -2
  255. data/tests/all.rb +1 -1
  256. data/tests/arc.rb +26 -0
  257. data/tests/dynldr.rb +22 -4
  258. data/tests/expression.rb +57 -0
  259. data/tests/graph_layout.rb +285 -0
  260. data/tests/ia32.rb +80 -26
  261. data/tests/mcs51.rb +27 -0
  262. data/tests/mips.rb +10 -3
  263. data/tests/preprocessor.rb +18 -0
  264. data/tests/x86_64.rb +66 -18
  265. metadata +465 -219
  266. metadata.gz.sig +2 -0
  267. data/lib/metasm/arm/opcodes.rb +0 -177
  268. data/lib/metasm/gui.rb +0 -23
  269. data/lib/metasm/gui/dasm_graph.rb +0 -1354
  270. data/lib/metasm/ia32.rb +0 -14
  271. data/lib/metasm/ia32/opcodes.rb +0 -872
  272. data/lib/metasm/ppc/parse.rb +0 -52
  273. data/lib/metasm/x86_64.rb +0 -12
  274. data/lib/metasm/x86_64/opcodes.rb +0 -118
  275. data/samples/gdbclient.rb +0 -583
  276. data/samples/rubstop.rb +0 -399
data/tests/ia32.rb CHANGED
@@ -16,44 +16,64 @@ class TestIa32 < Test::Unit::TestCase
16
16
 
17
17
  def assert_equal(a, b) super(b, a) end
18
18
 
19
+ def bin(s)
20
+ if s.respond_to?(:force_encoding)
21
+ s.force_encoding('BINARY')
22
+ else
23
+ s
24
+ end
25
+ end
26
+
19
27
  def test_basic
20
- assert_equal(assemble("nop"), "\x90")
21
- assert_equal(assemble("push eax"), "\x50")
22
- assert_equal(assemble("push 2"), "\x6a\x02")
23
- assert_equal(assemble("push 142"), "\x68\x8e\0\0\0")
28
+ assert_equal(assemble("nop"), bin("\x90"))
29
+ assert_equal(assemble("push eax"), bin("\x50"))
30
+ assert_equal(assemble("push 2"), bin("\x6a\x02"))
31
+ assert_equal(assemble("push 142"), bin("\x68\x8e\0\0\0"))
32
+ assert_equal(assemble("cmp al, 'a'"), bin("\x3c\x61"))
24
33
  end
25
34
 
26
35
  def test_sz
27
- assert_equal(assemble("dec eax"), "\x48")
28
- assert_equal(assemble("dec ax"), "\x66\x48")
29
- assert_equal(assemble("dec al"), "\xfe\xc8")
36
+ assert_equal(assemble("dec eax"), bin("\x48"))
37
+ assert_equal(assemble("dec ax"), bin("\x66\x48"))
38
+ assert_equal(assemble("dec al"), bin("\xfe\xc8"))
30
39
  assert_equal(assemble("arpl [edi+70h], bp"), "cop")
31
40
  end
32
41
 
33
42
  def test_16
34
- assert_equal(assemble("push 142", @@cpu16), "\x68\x8e\0")
35
- assert_equal(assemble("code16 push 142", @@cpu16), "\x68\x8e\0")
36
- assert_equal(assemble("code16 push 142"), "\x68\x8e\0")
37
- assert_equal(assemble("push.i16 142"), "\x66\x68\x8e\0")
38
- assert_equal(assemble("mov eax, 42"), "\xb8\x2a\0\0\0")
39
- assert_equal(assemble("code16 mov ax, 42"), "\xb8\x2a\0")
43
+ assert_equal(assemble("push 142", @@cpu16), bin("\x68\x8e\0"))
44
+ assert_equal(assemble("code16 push 142", @@cpu16), bin("\x68\x8e\0"))
45
+ assert_equal(assemble("code16 push 142"), bin("\x68\x8e\0"))
46
+ assert_equal(assemble("push.i16 142"), bin("\x66\x68\x8e\0"))
47
+ assert_equal(assemble("mov eax, 42"), bin("\xb8\x2a\0\0\0"))
48
+ assert_equal(assemble("code16 mov ax, 42"), bin("\xb8\x2a\0"))
40
49
  end
41
50
 
42
51
  def test_jmp
43
- assert_equal(assemble("jmp $"), "\xeb\xfe")
44
- assert_equal(assemble("jmp.i32 $"), "\xe9\xfb\xff\xff\xff")
52
+ assert_equal(assemble("jmp $"), bin("\xeb\xfe"))
53
+ assert_equal(assemble("jmp.i32 $"), bin("\xe9\xfb\xff\xff\xff"))
54
+ end
55
+
56
+ def test_opsz
57
+ assert_equal(assemble("cbw"), bin("\x66\x98"))
58
+ assert_equal(assemble("cwde"), bin("\x98"))
59
+
60
+ assert_equal(assemble("cbw", @@cpu16), bin("\x98"))
61
+ assert_equal(assemble("cwde", @@cpu16), bin("\x66\x98"))
62
+
63
+ assert_equal(assemble("cmpxchg8b [eax]"), bin("\x0f\xc7\x08"))
64
+ assert_equal(assemble("cmpxchg8b [bx]", @@cpu16), bin("\x66\x0f\xc7\x0f"))
45
65
  end
46
66
 
47
67
  def test_mrmsz
48
- assert_equal(assemble("mov [eax], ebx"), "\x89\x18")
49
- assert_equal(assemble("mov [eax], bl"), "\x88\x18")
50
- assert_equal(assemble("mov ebx, [eax]"), "\x8b\x18")
51
- assert_equal(assemble("mov bl, [eax]"), "\x8a\x18")
52
- assert_equal(assemble("mov bl, [bx]"), "\x67\x8a\x1f")
53
- assert_equal(assemble("mov bl, [bx]", @@cpu16), "\x8a\x1f")
54
- assert_equal(assemble("code16 mov bl, [bx]"), "\x8a\x1f")
55
- assert_equal(assemble("mov bl, [0]"), "\x8a\x1d\0\0\0\0")
56
- assert_equal(assemble("mov.a16 bl, [0]"), "\x67\x8a\x1e\0\0")
68
+ assert_equal(assemble("mov [eax], ebx"), bin("\x89\x18"))
69
+ assert_equal(assemble("mov [eax], bl"), bin("\x88\x18"))
70
+ assert_equal(assemble("mov ebx, [eax]"), bin("\x8b\x18"))
71
+ assert_equal(assemble("mov bl, [eax]"), bin("\x8a\x18"))
72
+ assert_equal(assemble("mov bl, [bx]"), bin("\x67\x8a\x1f"))
73
+ assert_equal(assemble("mov bl, [bx]", @@cpu16), bin("\x8a\x1f"))
74
+ assert_equal(assemble("code16 mov bl, [bx]"), bin("\x8a\x1f"))
75
+ assert_equal(assemble("mov bl, [0]"), bin("\x8a\x1d\0\0\0\0"))
76
+ assert_equal(assemble("mov.a16 bl, [0]"), bin("\x67\x8a\x1e\0\0"))
57
77
  end
58
78
 
59
79
  def test_err
@@ -64,7 +84,7 @@ class TestIa32 < Test::Unit::TestCase
64
84
  end
65
85
 
66
86
  def test_C
67
- src = "int bla(void) { volatile int i=0; return ++i; }"
87
+ src = "int bla(void) { volatile int i=0; return (int)++i; }"
68
88
  assert_equal(Metasm::Shellcode.compile_c(@@cpu32, src).encode_string,
69
89
  ["5589E583EC04C745FC00000000FF45FC8B45FC89EC5DC3"].pack('H*'))
70
90
  end
@@ -74,9 +94,43 @@ class TestIa32 < Test::Unit::TestCase
74
94
  end
75
95
 
76
96
  def test_dasm
77
- d = disassemble("\x90")
97
+ d = disassemble(bin("\x90"))
78
98
  assert_equal(d.decoded[0].class, Metasm::DecodedInstruction)
79
99
  assert_equal(d.decoded[0].opcode.name, "nop")
100
+
101
+ assert_equal(disassemble(bin("\x66\x0f\xc7\x08")).decoded[0], nil)
102
+ assert_equal(disassemble(bin("\x0f\xc7\x08")).decoded[0].opcode.name, "cmpxchg8b")
80
103
  end
81
104
 
105
+ def test_pfx
106
+ assert_equal(assemble("nop"), bin("\x90"))
107
+ assert_equal(assemble("pause"), bin("\xf3\x90"))
108
+ assert_equal(disassemble(bin("\x90")).decoded.values.first.opcode.name, "nop")
109
+ assert_equal(disassemble(bin("\xf3\x90")).decoded.values.first.opcode.name, "pause")
110
+ end
111
+
112
+ def test_avx
113
+ assert_equal(disassemble(bin("\xc4\xc3\x75\x42\xc2\x03")).decoded[0].instruction.to_s, "vmpsadbw ymm0, ymm1, ymm2, 3")
114
+ assert_equal(assemble("vmpsadbw ymm0, ymm1, ymm2, 3"), bin("\xc4\xc3\x75\x42\xc2\x03"))
115
+ assert_equal(assemble("vpblendvb xmm1, xmm2, xmm3, xmm4"), bin("\xc4\xc3\x69\x4c\xcb\x40"))
116
+ assert_equal(assemble("vgatherdpd xmm1, qword ptr [edx+xmm1], xmm2"), bin("\xc4\xc2\xe9\x92\x0c\x0a"))
117
+ assert_equal(disassemble(bin("\xc4\xc2\xe9\x92\x0c\x0a")).decoded[0].instruction.to_s, "vgatherdpd xmm1, qword ptr [edx+xmm1], xmm2")
118
+ end
119
+
120
+ def backtrace(asm, expr, cpu=@@cpu32)
121
+ raw = assemble(asm + "\n nop", cpu)
122
+ disassemble(raw, cpu).backtrace(expr, raw.length-1).first
123
+ end
124
+
125
+ def test_backtrace
126
+ assert_equal(backtrace("mov eax, 10", :eax), Metasm::Expression[10])
127
+ assert_equal(backtrace("mov eax, 0x1234\n ror eax, 8", :eax), Metasm::Expression[0x34000012])
128
+ assert_equal(backtrace("mov eax, 0x1234\n ror al, 4", :eax), Metasm::Expression[0x1243])
129
+ assert_equal(backtrace("mov eax, 0x1234\n shr al, 4", :eax), Metasm::Expression[0x1203])
130
+ assert_equal(backtrace("mov eax, 0x1234\n shl ah, 4", :eax), Metasm::Expression[0x2034])
131
+ assert_equal(backtrace("mov eax, 0xf000_0000\n add eax, 0x2000_0000\n shr eax, 28", :eax), Metasm::Expression[1])
132
+ assert_equal(backtrace("mov eax, 0xf000_0000\n add eax, 0x2000_0000\n ror eax, 28", :eax), Metasm::Expression[1])
133
+ assert_equal(backtrace("mov eax, 1\n mov ebx, 2\n xchg al, bl", :eax), Metasm::Expression[2])
134
+ assert_equal(backtrace("mov eax, 0x01020304\n xchg al, ah", :eax), Metasm::Expression[0x01020403])
135
+ end
82
136
  end
data/tests/mcs51.rb ADDED
@@ -0,0 +1,27 @@
1
+ # This file is part of Metasm, the Ruby assembly manipulation suite
2
+ # Copyright (C) 2015 Google
3
+ #
4
+ # Licence is LGPL, see LICENCE in the top-level directory
5
+
6
+ require 'test/unit'
7
+ require 'metasm'
8
+
9
+
10
+ class TestMCS51 < Test::Unit::TestCase
11
+ def test_mcs51_dec
12
+ hex_stream = "\x09\x00\x1F" # inc; nop; dec
13
+ hex_stream += "\x58\xF9\xEC\x32\x36\xc4\xa5\x24\x02\x45\x03"
14
+ hex_stream += "\x84\xa4\xc5\xa5\x70\xfe"
15
+ hex_stream += "\xba\x04\x08"
16
+ hex_stream += "\xc0\x04"
17
+ hex_stream += "\x11\x23"
18
+ hex_stream += "\xa1\x88"
19
+ hex_stream += "\x62\x88"
20
+ hex_stream += "\x53\x79\x66"
21
+ hex_stream += "\x02\x12\x34"
22
+
23
+ dasm = Metasm::Shellcode.disassemble(Metasm::MCS51.new, hex_stream)
24
+ #puts dasm
25
+ assert_equal(23, dasm.decoded.length)
26
+ end
27
+ end
data/tests/mips.rb CHANGED
@@ -105,12 +105,19 @@ EOS
105
105
  # '' << "\x80" => 8bits
106
106
  # '' << 0x80 => ascii
107
107
  # Edata.data is ascii for now, so this is needed to make the test work.
108
- str = ''
109
- "\x24\x0e\xff\xfb\x01\xc0\x70\x27\x24\x0b\xff\xb7\x05\x10\xff\xff\x28\x08\x82\x82\x01\x60\x58\x27\x03\xeb\xc8\x21\x28\x17\x82\x82\x8f\x31\xff\xfc\x24\x0d\xff\xfb\x01\xa0\x68\x27\x21\xaf\xff\xfd\x8f\x28\xff\xfc\x02\xef\xb8\x21\x01\x11\x18\x26\x02\xee\xf0\x2b\xaf\x23\xff\xfc\x21\xa6\xff\xff\x17\xc0\xff\xf9\x03\x2d\xc8\x21\x24\x02\x10\x33\x01\x4a\x54\x0c\0\0\0\0".each_byte { |b| str << b }
108
+ str = bin("\x24\x0e\xff\xfb\x01\xc0\x70\x27\x24\x0b\xff\xb7\x05\x10\xff\xff\x28\x08\x82\x82\x01\x60\x58\x27\x03\xeb\xc8\x21\x28\x17\x82\x82\x8f\x31\xff\xfc\x24\x0d\xff\xfb\x01\xa0\x68\x27\x21\xaf\xff\xfd\x8f\x28\xff\xfc\x02\xef\xb8\x21\x01\x11\x18\x26\x02\xee\xf0\x2b\xaf\x23\xff\xfc\x21\xa6\xff\xff\x17\xc0\xff\xf9\x03\x2d\xc8\x21\x24\x02\x10\x33\x01\x4a\x54\x0c\0\0\0\0")
110
109
  assert_equal(str, sc.encoded.data)
111
110
 
112
111
  dasm_src = Metasm::Shellcode.disassemble(Metasm::MIPS.new(:big), sc.encoded.data).to_s
113
112
  lines = dasm_src.respond_to?(:lines) ? dasm_src.lines : dasm_src.to_a
114
- assert_equal(28, lines.grep(/\S/).length)
113
+ assert_equal(26, lines.grep(/^[^\/].*\S/).length)
114
+ end
115
+
116
+ def bin(s)
117
+ if s.respond_to?(:force_encoding)
118
+ s.force_encoding('BINARY')
119
+ else
120
+ s
121
+ end
115
122
  end
116
123
  end
@@ -68,6 +68,23 @@ EOS
68
68
  #if defined ( tutu )
69
69
  tutu coucou
70
70
  #endif
71
+ EOS
72
+ helper_preparse(<<EOS, 'a1')
73
+ #define tutu
74
+ #if ! defined ( tutu )
75
+ a0
76
+ #else
77
+ a1
78
+ #endif
79
+ EOS
80
+ helper_preparse(<<EOS, 'a1')
81
+ #define tutu
82
+ #if defined(tutu) ? 0 : 1
83
+ a0
84
+ #endif
85
+ #if defined(toto) ? 0 : 1
86
+ a1
87
+ #endif
71
88
  EOS
72
89
  helper_preparse('a #define b', 'a #define b')
73
90
  helper_preparse(<<EOS, "// true !\nblu")
@@ -142,6 +159,7 @@ EOS
142
159
  #include <tests/prepro_testinclude.asm>
143
160
  out
144
161
  EOS
162
+ rescue Errno::ENOENT
145
163
  ensure
146
164
  File.unlink('tests/prepro_testinclude.asm') rescue nil
147
165
  end
data/tests/x86_64.rb CHANGED
@@ -17,15 +17,24 @@ class TestX86_64 < Test::Unit::TestCase
17
17
  assert_equal(Metasm::X86_64, Metasm::Ia32.new(64).class)
18
18
  end
19
19
 
20
+ def bin(s)
21
+ if s.respond_to?(:force_encoding)
22
+ s.force_encoding('BINARY')
23
+ else
24
+ s
25
+ end
26
+ end
27
+
20
28
  def test_basic
21
- assert_equal("\x90", assemble("nop"))
22
- assert_equal("\x50", assemble("push rax"))
23
- assert_equal("\x41\x50", assemble("push r8"))
24
- assert_equal("\x6a\x02", assemble("push 2"))
25
- assert_equal("\x68\x8e\0\0\0", assemble("push 142"))
26
- assert_equal("\x48\xbb\xef\xcd\xab\x89\x67\x45\x23\x01", assemble("mov rbx, 0123456789abcdefh"))
27
- assert_equal("\x8d\x05\x0c\0\0\0", assemble("lea eax, [rip+12]"))
28
- assert_equal("\x8d\x04\x25\x0c\0\0\0", assemble("lea eax, [12]"))
29
+ assert_equal(bin("\x90"), assemble("nop"))
30
+ assert_equal(bin("\x50"), assemble("push rax"))
31
+ assert_equal(bin("\x41\x50"), assemble("push r8"))
32
+ assert_equal(bin("\x6a\x02"), assemble("push 2"))
33
+ assert_equal(bin("\x68\x8e\0\0\0"), assemble("push 142"))
34
+ assert_equal(bin("\x48\xbb\xef\xcd\xab\x89\x67\x45\x23\x01"), assemble("mov rbx, 0123456789abcdefh"))
35
+ assert_equal(bin("\x8d\x05\x0c\0\0\0"), assemble("lea eax, [rip+12]"))
36
+ assert_equal(bin("\x8d\x04\x25\x0c\0\0\0"), assemble("lea eax, [12]"))
37
+ assert_equal(bin("\x48\x81\xE3\xFF\xF0\xFF\xFF"), assemble("and rbx, 0xffffffff_fffff0ff"))
29
38
  end
30
39
 
31
40
  def test_err
@@ -35,6 +44,8 @@ class TestX86_64 < Test::Unit::TestCase
35
44
  assert_raise(Metasm::ParseError) { assemble("add [bx]") }
36
45
  assert_raise(Metasm::ParseError) { assemble("add [eip+4*eax]") }
37
46
  assert_raise(Metasm::ParseError) { assemble("add ah, r8b") }
47
+ assert_raise(Metasm::EncodeError) { assemble("and rbx, 0x1_ffffffff_ffffffff") }
48
+ assert_raise(Metasm::EncodeError) { assemble("mov rbx, 011123456789abcdefh") }
38
49
  end
39
50
 
40
51
  def disassemble(bin, cpu=@@cpu)
@@ -42,21 +53,58 @@ class TestX86_64 < Test::Unit::TestCase
42
53
  end
43
54
 
44
55
  def test_dasm
45
- d = disassemble("\x90")
56
+ d = disassemble(bin("\x90"))
46
57
  assert_equal(Metasm::DecodedInstruction, d.decoded[0].class)
47
58
  assert_equal('nop', d.decoded[0].opcode.name)
48
59
  end
49
60
 
50
61
  def test_rex
51
- assert_equal("\xfe\xc0", assemble("inc al"))
52
- assert_equal("\xfe\xc4", assemble("inc ah"))
53
- assert_equal("\x40\xfe\xc4", assemble("inc spl"))
54
- assert_equal("\x41\xfe\xc4", assemble("inc r12b"))
62
+ assert_equal(bin("\xfe\xc0"), assemble("inc al"))
63
+ assert_equal(bin("\xfe\xc4"), assemble("inc ah"))
64
+ assert_equal(bin("\x40\xfe\xc4"), assemble("inc spl"))
65
+ assert_equal(bin("\x41\xfe\xc4"), assemble("inc r12b"))
55
66
  op = lambda { |s| i = disassemble(s).decoded[0].instruction ; i.to_s ; i.args.last.to_s }
56
- assert_equal('al', op["\xfe\xc0"])
57
- assert_equal('ah', op["\xfe\xc4"])
58
- assert_equal('spl', op["\x40\xfe\xc4"])
59
- assert_equal('r12b', op["\x41\xfe\xc4"])
60
- assert_equal('[rip-6+12h]', op["\x8d\x05\x0c\0\0\0"])
67
+ assert_equal('al', op[bin("\xfe\xc0")])
68
+ assert_equal('ah', op[bin("\xfe\xc4")])
69
+ assert_equal('spl', op[bin("\x40\xfe\xc4")])
70
+ assert_equal('r12b', op[bin("\x41\xfe\xc4")])
71
+ assert_equal('[rip-6+12h]', op[bin("\x8d\x05\x0c\0\0\0")])
61
72
  end
73
+
74
+ def test_opsz
75
+ assert_equal(bin("\x66\x98"), assemble("cbw"))
76
+ assert_equal(bin("\x98"), assemble("cwde"))
77
+ assert_equal(bin("\x48\x98"), assemble("cdqe"))
78
+
79
+ assert_equal(bin("\x0f\xc7\x08"), assemble("cmpxchg8b [rax]"))
80
+ assert_equal(bin("\x48\x0f\xc7\x08"), assemble("cmpxchg16b [rax]"))
81
+
82
+ assert_equal(nil, disassemble(bin("\x66\x0f\xc7\x08")).decoded[0])
83
+ assert_equal('cmpxchg8b', disassemble(bin("\x47\x0f\xc7\x08")).decoded[0].opcode.name)
84
+ assert_equal('cmpxchg16b', disassemble(bin("\x48\x0f\xc7\x08")).decoded[0].opcode.name)
85
+ end
86
+
87
+ def test_avx
88
+ assert_equal('vmpsadbw ymm12, ymm14, ymm2, 3', disassemble(bin("\xc4\x63\x0d\x42\xe2\x03")).decoded[0].instruction.to_s)
89
+ assert_equal(bin("\xc4\x63\x0d\x42\xe2\x03"), assemble('vmpsadbw ymm12, ymm14, ymm2, 3'))
90
+ assert_equal(bin("\xc5\x31\x63\xc2"), assemble('vpacksswb xmm8, xmm9, xmm2'))
91
+ assert_equal(bin("\xc4\x41\x31\x63\xc2"), assemble('vpacksswb xmm8, xmm9, xmm10'))
92
+ assert_equal(bin("\xc5\x31\x63\x04\x5a"), assemble('vpacksswb xmm8, xmm9, [rdx+2*rbx]'))
93
+ assert_equal(bin("\xc4\x01\x31\x63\x04\x5a"), assemble('vpacksswb xmm8, xmm9, [r10+2*r11]'))
94
+ assert_equal(bin("\xc4\x22\x99\x92\x14\x1a"), assemble('vgatherdpd xmm10, qword ptr [rdx+xmm11], xmm12'))
95
+ assert_equal('vgatherdpd xmm10, qword ptr [rdx+xmm11], xmm12', disassemble(bin("\xc4\x22\x99\x92\x14\x1a")).decoded[0].instruction.to_s)
96
+ end
97
+
98
+ def test_lol
99
+ # x64 nop weirdnesses
100
+ assert_equal(bin("\x87\xc0"), assemble('xchg eax, eax'))
101
+ assert_equal('xchg r8, rax', disassemble(bin("\x49\x90")).decoded[0].instruction.to_s)
102
+ end
103
+
104
+ def test_C_size
105
+ assert_nothing_raised {
106
+ Metasm::Shellcode.compile_c(@@cpu, "void main(void) { int i=5670, j=8907 ; i = i*j; }").encode_string
107
+ }
108
+ end
109
+
62
110
  end
metadata CHANGED
@@ -1,255 +1,501 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: metasm
3
- version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease:
6
- segments:
7
- - 1
8
- - 0
9
- - 0
10
- version: 1.0.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.5
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Yoann Guillot
14
8
  autorequire:
15
9
  bindir: bin
16
- cert_chain: []
17
-
18
- date: 2011-04-26 00:00:00 Z
19
- dependencies: []
20
-
21
- description: Metasm is a cross-architecture assembler, disassembler, compiler, linker and debugger in pure Ruby with no dependencies.
22
- email: yoann@ofjj.net
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl
14
+ MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
15
+ d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
16
+ b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG
17
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
18
+ cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi
19
+ MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c
20
+ JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP
21
+ mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+
22
+ wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4
23
+ VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/
24
+ AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB
25
+ AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
26
+ BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
27
+ pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC
28
+ dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf
29
+ fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm
30
+ NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx
31
+ H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
32
+ +o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
33
+ -----END CERTIFICATE-----
34
+ - |
35
+ -----BEGIN CERTIFICATE-----
36
+ MIIFMDCCBBigAwIBAgIQBAkYG1/Vu2Z1U0O1b5VQCDANBgkqhkiG9w0BAQsFADBl
37
+ MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
38
+ d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
39
+ b3QgQ0EwHhcNMTMxMDIyMTIwMDAwWhcNMjgxMDIyMTIwMDAwWjByMQswCQYDVQQG
40
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
41
+ cnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQgSUQgQ29kZSBT
42
+ aWduaW5nIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+NOzHH8O
43
+ Ea9ndwfTCzFJGc/Q+0WZsTrbRPV/5aid2zLXcep2nQUut4/6kkPApfmJ1DcZ17aq
44
+ 8JyGpdglrA55KDp+6dFn08b7KSfH03sjlOSRI5aQd4L5oYQjZhJUM1B0sSgmuyRp
45
+ wsJS8hRniolF1C2ho+mILCCVrhxKhwjfDPXiTWAYvqrEsq5wMWYzcT6scKKrzn/p
46
+ fMuSoeU7MRzP6vIK5Fe7SrXpdOYr/mzLfnQ5Ng2Q7+S1TqSp6moKq4TzrGdOtcT3
47
+ jNEgJSPrCGQ+UpbB8g8S9MWOD8Gi6CxR93O8vYWxYoNzQYIH5DiLanMg0A9kczye
48
+ n6Yzqf0Z3yWT0QIDAQABo4IBzTCCAckwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNV
49
+ HQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUHAwMweQYIKwYBBQUHAQEEbTBr
50
+ MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQwYIKwYBBQUH
51
+ MAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ
52
+ RFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgwOqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2lj
53
+ ZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwOqA4oDaGNGh0dHA6
54
+ Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmww
55
+ TwYDVR0gBEgwRjA4BgpghkgBhv1sAAIEMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
56
+ d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCgYIYIZIAYb9bAMwHQYDVR0OBBYEFFrEuXsq
57
+ CqOl6nEDwGD5LfZldQ5YMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgP
58
+ MA0GCSqGSIb3DQEBCwUAA4IBAQA+7A1aJLPzItEVyCx8JSl2qB1dHC06GsTvMGHX
59
+ fgtg/cM9D8Svi/3vKt8gVTew4fbRknUPUbRupY5a4l4kgU4QpO4/cY5jDhNLrddf
60
+ RHnzNhQGivecRk5c/5CxGwcOkRX7uq+1UcKNJK4kxscnKqEpKBo6cSgCPC6Ro8Al
61
+ EeKcFEehemhor5unXCBc2XGxDI+7qPjFEmifz0DLQESlE/DmZAwlCEIysjaKJAL+
62
+ L3J+HNdJRZboWR3p+nRka7LrZkPas7CM1ekN3fYBIM6ZMWM9CBoYs4GbT8aTEAb8
63
+ B4H6i9r5gkn3Ym6hU/oSlBiFLpKR6mhsRDKyZqHnGKSaZFHv
64
+ -----END CERTIFICATE-----
65
+ - |
66
+ -----BEGIN CERTIFICATE-----
67
+ MIIFIzCCBAugAwIBAgIQCMePMbkSxvnPeJhYXIfaxzANBgkqhkiG9w0BAQsFADBy
68
+ MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
69
+ d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQg
70
+ SUQgQ29kZSBTaWduaW5nIENBMB4XDTIwMTAwNzAwMDAwMFoXDTIzMTEwNjEyMDAw
71
+ MFowYDELMAkGA1UEBhMCVVMxFjAUBgNVBAgTDU1hc3NhY2h1c2V0dHMxDzANBgNV
72
+ BAcTBkJvc3RvbjETMBEGA1UEChMKUmFwaWQ3IExMQzETMBEGA1UEAxMKUmFwaWQ3
73
+ IExMQzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNTz4zvAy7h/vQp
74
+ 4dr1txXHlABAagkwYYwTMCtHs5PXsJITx/5SAjx5swuaLfze5kPBNF2YImvFlOXY
75
+ WaB+0PsOnXnaARsDZU683xFlj8izU6IN6VrAHzDLKFBzruJENrOJD/ikbEtbjO/q
76
+ gFbmS9J9v5ohG/pcRSS0t4ZPAwymf8eCp6QsvOKK/Aymp1RhlRaP8N6N5CIpkhz1
77
+ 9p968iCE+DjOXVYxcWE+jE/7uB1dbgrXykNBujMSS3GULOvVEY28n6NCmrPlo23g
78
+ yRjYVJ2Vy14nBqnxDZ/yRIfWRVjWoT9TsAEbe9gY29oDpSCSs4wSmLQd5zGCpZ9h
79
+ r0HDFB8CAwEAAaOCAcUwggHBMB8GA1UdIwQYMBaAFFrEuXsqCqOl6nEDwGD5LfZl
80
+ dQ5YMB0GA1UdDgQWBBTLBL7DTwumVEKtdCdpHVYMXOFeDzAOBgNVHQ8BAf8EBAMC
81
+ B4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwdwYDVR0fBHAwbjA1oDOgMYYvaHR0cDov
82
+ L2NybDMuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC1jcy1nMS5jcmwwNaAzoDGG
83
+ L2h0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3Js
84
+ MEwGA1UdIARFMEMwNwYJYIZIAYb9bAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
85
+ d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQQBMIGEBggrBgEFBQcBAQR4MHYw
86
+ JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBOBggrBgEFBQcw
87
+ AoZCaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMkFzc3Vy
88
+ ZWRJRENvZGVTaWduaW5nQ0EuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEL
89
+ BQADggEBAN+GL5/myPWg7oH4mVrG7/OhXF1MoYQF0ddaNiqaweEHMuKJBQCVZRbL
90
+ 37HojoKXXv2yyRJBCeTB+ojrxX+5PdLVZa0ss7toWzJ2A1poPXZ1eZvm5xeFD32z
91
+ YQaTmmNWNI3PCDTyJ2PXUc+bDiNNwcZ7yc5o78UNRvp9Jxghya17Q76c9Ov9wvnv
92
+ dxxQKWGOQy0m4fBrkyjAyH9Djjn81RbQrqYgPuhd5nD0HjN3VUQLhQbIJrk9TVs0
93
+ EknWpNgVhohbot1lfVAMmIhdtOVaRVcQQixWPwprDj/ydB8ryDMDosIMcw+fkoXU
94
+ 9GJsSaSRRYQ9UUkVL27b64okU8D48m8=
95
+ -----END CERTIFICATE-----
96
+ date: 2021-07-02 00:00:00.000000000 Z
97
+ dependencies:
98
+ - !ruby/object:Gem::Dependency
99
+ name: bundler
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '1.7'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '1.7'
112
+ - !ruby/object:Gem::Dependency
113
+ name: rake
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: test-unit
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ description: ''
141
+ email:
142
+ - john at ofjj.net
23
143
  executables: []
24
-
25
144
  extensions: []
26
-
27
145
  extra_rdoc_files: []
28
-
29
- files:
146
+ files:
147
+ - ".gitignore"
148
+ - ".hgtags"
30
149
  - BUGS
31
150
  - CREDITS
151
+ - Gemfile
152
+ - INSTALL
153
+ - LICENCE
32
154
  - README
155
+ - Rakefile
33
156
  - TODO
34
- - tests/parse_c.rb
35
- - tests/dynldr.rb
36
- - tests/encodeddata.rb
37
- - tests/mips.rb
38
- - tests/x86_64.rb
39
- - tests/all.rb
40
- - tests/preprocessor.rb
41
- - tests/ia32.rb
42
- - tests/dasm.rb
43
- - misc/objdiff.rb
44
- - misc/pdfparse.rb
45
- - misc/ppc_pdf2oplist.rb
46
- - misc/objscan.rb
47
- - misc/tcp_proxy_hex.rb
48
- - misc/hexdump.rb
157
+ - doc/code_organisation.txt
158
+ - doc/const_missing.txt
159
+ - doc/core/DynLdr.txt
160
+ - doc/core/ExeFormat.txt
161
+ - doc/core/Expression.txt
162
+ - doc/core/GNUExports.txt
163
+ - doc/core/Ia32.txt
164
+ - doc/core/SerialStruct.txt
165
+ - doc/core/VirtualString.txt
166
+ - doc/core/WindowsExports.txt
167
+ - doc/core/index.txt
168
+ - doc/core_classes.txt
169
+ - doc/feature_list.txt
170
+ - doc/index.txt
171
+ - doc/install_notes.txt
172
+ - doc/style.css
173
+ - doc/usage/debugger.txt
174
+ - doc/usage/index.txt
175
+ - doc/use_cases.txt
176
+ - metasm.gemspec
177
+ - metasm.rb
178
+ - metasm/compile_c.rb
179
+ - metasm/cpu/arc.rb
180
+ - metasm/cpu/arc/decode.rb
181
+ - metasm/cpu/arc/main.rb
182
+ - metasm/cpu/arc/opcodes.rb
183
+ - metasm/cpu/arm.rb
184
+ - metasm/cpu/arm/debug.rb
185
+ - metasm/cpu/arm/decode.rb
186
+ - metasm/cpu/arm/encode.rb
187
+ - metasm/cpu/arm/main.rb
188
+ - metasm/cpu/arm/opcodes.rb
189
+ - metasm/cpu/arm/parse.rb
190
+ - metasm/cpu/arm/render.rb
191
+ - metasm/cpu/arm64.rb
192
+ - metasm/cpu/arm64/debug.rb
193
+ - metasm/cpu/arm64/decode.rb
194
+ - metasm/cpu/arm64/encode.rb
195
+ - metasm/cpu/arm64/main.rb
196
+ - metasm/cpu/arm64/opcodes.rb
197
+ - metasm/cpu/arm64/parse.rb
198
+ - metasm/cpu/arm64/render.rb
199
+ - metasm/cpu/bpf.rb
200
+ - metasm/cpu/bpf/decode.rb
201
+ - metasm/cpu/bpf/main.rb
202
+ - metasm/cpu/bpf/opcodes.rb
203
+ - metasm/cpu/bpf/render.rb
204
+ - metasm/cpu/cy16.rb
205
+ - metasm/cpu/cy16/decode.rb
206
+ - metasm/cpu/cy16/main.rb
207
+ - metasm/cpu/cy16/opcodes.rb
208
+ - metasm/cpu/cy16/render.rb
209
+ - metasm/cpu/dalvik.rb
210
+ - metasm/cpu/dalvik/decode.rb
211
+ - metasm/cpu/dalvik/main.rb
212
+ - metasm/cpu/dalvik/opcodes.rb
213
+ - metasm/cpu/ebpf.rb
214
+ - metasm/cpu/ebpf/debug.rb
215
+ - metasm/cpu/ebpf/decode.rb
216
+ - metasm/cpu/ebpf/main.rb
217
+ - metasm/cpu/ebpf/opcodes.rb
218
+ - metasm/cpu/ebpf/render.rb
219
+ - metasm/cpu/ia32.rb
220
+ - metasm/cpu/ia32/compile_c.rb
221
+ - metasm/cpu/ia32/debug.rb
222
+ - metasm/cpu/ia32/decode.rb
223
+ - metasm/cpu/ia32/decompile.rb
224
+ - metasm/cpu/ia32/encode.rb
225
+ - metasm/cpu/ia32/main.rb
226
+ - metasm/cpu/ia32/opcodes.rb
227
+ - metasm/cpu/ia32/parse.rb
228
+ - metasm/cpu/ia32/render.rb
229
+ - metasm/cpu/mcs51.rb
230
+ - metasm/cpu/mcs51/decode.rb
231
+ - metasm/cpu/mcs51/main.rb
232
+ - metasm/cpu/mcs51/opcodes.rb
233
+ - metasm/cpu/mips.rb
234
+ - metasm/cpu/mips/debug.rb
235
+ - metasm/cpu/mips/decode.rb
236
+ - metasm/cpu/mips/encode.rb
237
+ - metasm/cpu/mips/main.rb
238
+ - metasm/cpu/mips/opcodes.rb
239
+ - metasm/cpu/mips/parse.rb
240
+ - metasm/cpu/mips/render.rb
241
+ - metasm/cpu/msp430.rb
242
+ - metasm/cpu/msp430/decode.rb
243
+ - metasm/cpu/msp430/main.rb
244
+ - metasm/cpu/msp430/opcodes.rb
245
+ - metasm/cpu/openrisc.rb
246
+ - metasm/cpu/openrisc/debug.rb
247
+ - metasm/cpu/openrisc/decode.rb
248
+ - metasm/cpu/openrisc/decompile.rb
249
+ - metasm/cpu/openrisc/main.rb
250
+ - metasm/cpu/openrisc/opcodes.rb
251
+ - metasm/cpu/openrisc/render.rb
252
+ - metasm/cpu/pic16c/decode.rb
253
+ - metasm/cpu/pic16c/main.rb
254
+ - metasm/cpu/pic16c/opcodes.rb
255
+ - metasm/cpu/ppc.rb
256
+ - metasm/cpu/ppc/decode.rb
257
+ - metasm/cpu/ppc/decompile.rb
258
+ - metasm/cpu/ppc/encode.rb
259
+ - metasm/cpu/ppc/main.rb
260
+ - metasm/cpu/ppc/opcodes.rb
261
+ - metasm/cpu/ppc/parse.rb
262
+ - metasm/cpu/python.rb
263
+ - metasm/cpu/python/decode.rb
264
+ - metasm/cpu/python/main.rb
265
+ - metasm/cpu/python/opcodes.rb
266
+ - metasm/cpu/sh4.rb
267
+ - metasm/cpu/sh4/decode.rb
268
+ - metasm/cpu/sh4/main.rb
269
+ - metasm/cpu/sh4/opcodes.rb
270
+ - metasm/cpu/st20.rb
271
+ - metasm/cpu/st20/decode.rb
272
+ - metasm/cpu/st20/decompile.rb
273
+ - metasm/cpu/st20/main.rb
274
+ - metasm/cpu/st20/opcodes.rb
275
+ - metasm/cpu/webasm.rb
276
+ - metasm/cpu/webasm/debug.rb
277
+ - metasm/cpu/webasm/decode.rb
278
+ - metasm/cpu/webasm/decompile.rb
279
+ - metasm/cpu/webasm/encode.rb
280
+ - metasm/cpu/webasm/main.rb
281
+ - metasm/cpu/webasm/opcodes.rb
282
+ - metasm/cpu/x86_64.rb
283
+ - metasm/cpu/x86_64/compile_c.rb
284
+ - metasm/cpu/x86_64/debug.rb
285
+ - metasm/cpu/x86_64/decode.rb
286
+ - metasm/cpu/x86_64/encode.rb
287
+ - metasm/cpu/x86_64/main.rb
288
+ - metasm/cpu/x86_64/opcodes.rb
289
+ - metasm/cpu/x86_64/parse.rb
290
+ - metasm/cpu/x86_64/render.rb
291
+ - metasm/cpu/z80.rb
292
+ - metasm/cpu/z80/decode.rb
293
+ - metasm/cpu/z80/main.rb
294
+ - metasm/cpu/z80/opcodes.rb
295
+ - metasm/cpu/z80/render.rb
296
+ - metasm/debug.rb
297
+ - metasm/decode.rb
298
+ - metasm/decompile.rb
299
+ - metasm/disassemble.rb
300
+ - metasm/disassemble_api.rb
301
+ - metasm/dynldr.rb
302
+ - metasm/encode.rb
303
+ - metasm/exe_format/a_out.rb
304
+ - metasm/exe_format/autoexe.rb
305
+ - metasm/exe_format/bflt.rb
306
+ - metasm/exe_format/coff.rb
307
+ - metasm/exe_format/coff_decode.rb
308
+ - metasm/exe_format/coff_encode.rb
309
+ - metasm/exe_format/dex.rb
310
+ - metasm/exe_format/dol.rb
311
+ - metasm/exe_format/elf.rb
312
+ - metasm/exe_format/elf_decode.rb
313
+ - metasm/exe_format/elf_encode.rb
314
+ - metasm/exe_format/gb.rb
315
+ - metasm/exe_format/javaclass.rb
316
+ - metasm/exe_format/macho.rb
317
+ - metasm/exe_format/main.rb
318
+ - metasm/exe_format/mz.rb
319
+ - metasm/exe_format/nds.rb
320
+ - metasm/exe_format/pe.rb
321
+ - metasm/exe_format/pyc.rb
322
+ - metasm/exe_format/serialstruct.rb
323
+ - metasm/exe_format/shellcode.rb
324
+ - metasm/exe_format/shellcode_rwx.rb
325
+ - metasm/exe_format/swf.rb
326
+ - metasm/exe_format/wasm.rb
327
+ - metasm/exe_format/xcoff.rb
328
+ - metasm/exe_format/zip.rb
329
+ - metasm/gui.rb
330
+ - metasm/gui/cstruct.rb
331
+ - metasm/gui/dasm_coverage.rb
332
+ - metasm/gui/dasm_decomp.rb
333
+ - metasm/gui/dasm_funcgraph.rb
334
+ - metasm/gui/dasm_graph.rb
335
+ - metasm/gui/dasm_hex.rb
336
+ - metasm/gui/dasm_listing.rb
337
+ - metasm/gui/dasm_main.rb
338
+ - metasm/gui/dasm_opcodes.rb
339
+ - metasm/gui/debug.rb
340
+ - metasm/gui/gtk.rb
341
+ - metasm/gui/qt.rb
342
+ - metasm/gui/win32.rb
343
+ - metasm/gui/x11.rb
344
+ - metasm/main.rb
345
+ - metasm/os/emulator.rb
346
+ - metasm/os/gdbremote.rb
347
+ - metasm/os/gnu_exports.rb
348
+ - metasm/os/linux.rb
349
+ - metasm/os/main.rb
350
+ - metasm/os/windows.rb
351
+ - metasm/os/windows_exports.rb
352
+ - metasm/parse.rb
353
+ - metasm/parse_c.rb
354
+ - metasm/preprocessor.rb
355
+ - metasm/render.rb
49
356
  - misc/bottleneck.rb
50
357
  - misc/cheader-findpppath.rb
51
358
  - misc/hexdiff.rb
359
+ - misc/hexdump.rb
360
+ - misc/lint.rb
52
361
  - misc/metasm-all.rb
362
+ - misc/objdiff.rb
363
+ - misc/objscan.rb
364
+ - misc/openrisc-parser.rb
365
+ - misc/pdfparse.rb
366
+ - misc/ppc_pdf2oplist.rb
367
+ - misc/tcp_proxy_hex.rb
53
368
  - misc/txt2html.rb
54
- - doc/const_missing.txt
55
- - doc/index.txt
56
- - doc/code_organisation.txt
57
- - doc/feature_list.txt
58
- - doc/style.css
59
- - doc/use_cases.txt
60
- - doc/core_classes.txt
61
- - doc/install_notes.txt
62
- - samples/source.asm
63
- - samples/win32livedasm.rb
64
- - samples/machoencode.rb
65
- - samples/hotfix_gtk_dbg.rb
66
- - samples/dbg-apihook.rb
67
- - samples/rubstop.rb
68
- - samples/scan_pt_gnu_stack.rb
69
- - samples/pe_listexports.rb
70
- - samples/compilation-steps.rb
71
- - samples/testraw.rb
72
- - samples/bindiff.rb
73
- - samples/factorize-headers.rb
74
- - samples/pe-ia32-cpuid.rb
75
369
  - samples/a.out.rb
76
- - samples/shellcode-dynlink.rb
77
- - samples/pe-testrelocs.rb
78
- - samples/exeencode.rb
79
- - samples/lindebug.rb
80
- - samples/elfencode.rb
81
- - samples/dynamic_ruby.rb
82
- - samples/dump_upx.rb
370
+ - samples/asmsyntax.rb
371
+ - samples/bindiff.rb
372
+ - samples/compilation-steps.rb
83
373
  - samples/cparser_makestackoffset.rb
84
- - samples/disassemble.rb
85
- - samples/win32genloader.rb
86
- - samples/pe-mips.rb
374
+ - samples/dasm-backtrack.rb
375
+ - samples/dasm-plugins/bindiff.rb
376
+ - samples/dasm-plugins/bookmark.rb
377
+ - samples/dasm-plugins/c_constants.rb
378
+ - samples/dasm-plugins/colortheme_solarized.rb
379
+ - samples/dasm-plugins/cppobj_funcall.rb
380
+ - samples/dasm-plugins/dasm_all.rb
381
+ - samples/dasm-plugins/demangle_cpp.rb
382
+ - samples/dasm-plugins/deobfuscate.rb
383
+ - samples/dasm-plugins/dump_text.rb
384
+ - samples/dasm-plugins/export_graph_svg.rb
385
+ - samples/dasm-plugins/findgadget.rb
386
+ - samples/dasm-plugins/hl_opcode.rb
387
+ - samples/dasm-plugins/hotfix_gtk_dbg.rb
388
+ - samples/dasm-plugins/imm2off.rb
389
+ - samples/dasm-plugins/match_libsigs.rb
390
+ - samples/dasm-plugins/patch_file.rb
391
+ - samples/dasm-plugins/scanfuncstart.rb
392
+ - samples/dasm-plugins/scanxrefs.rb
393
+ - samples/dasm-plugins/selfmodify.rb
394
+ - samples/dasm-plugins/stringsxrefs.rb
395
+ - samples/dasmnavig.rb
396
+ - samples/dbg-apihook.rb
397
+ - samples/dbg-plugins/heapscan.rb
398
+ - samples/dbg-plugins/heapscan/compiled_heapscan_lin.c
399
+ - samples/dbg-plugins/heapscan/compiled_heapscan_win.c
400
+ - samples/dbg-plugins/heapscan/graphheap.rb
401
+ - samples/dbg-plugins/heapscan/heapscan.rb
402
+ - samples/dbg-plugins/heapscan/winheap.h
403
+ - samples/dbg-plugins/heapscan/winheap7.h
404
+ - samples/dbg-plugins/trace_func.rb
405
+ - samples/dbghelp.rb
87
406
  - samples/disassemble-gui.rb
88
- - samples/linux_injectsyscall.rb
89
- - samples/peldr.rb
90
- - samples/r0trace.rb
407
+ - samples/disassemble.rb
408
+ - samples/dump_upx.rb
409
+ - samples/dynamic_ruby.rb
91
410
  - samples/elf_list_needed.rb
92
- - samples/dasmnavig.rb
93
- - samples/win32hooker.rb
94
- - samples/peencode.rb
95
- - samples/win32hooker-advanced.rb
411
+ - samples/elf_listexports.rb
412
+ - samples/elfencode.rb
413
+ - samples/emubios.rb
414
+ - samples/emudbg.rb
415
+ - samples/exeencode.rb
96
416
  - samples/factorize-headers-elfimports.rb
97
- - samples/win32remotescan.rb
98
- - samples/struct_offset.rb
99
- - samples/wintrace.rb
100
- - samples/pe-hook.rb
101
- - samples/metasm-shell.rb
102
- - samples/pe-shutdown.rb
103
- - samples/dasm-backtrack.rb
104
- - samples/testpe.rb
417
+ - samples/factorize-headers-peimports.rb
418
+ - samples/factorize-headers.rb
105
419
  - samples/generate_libsigs.rb
420
+ - samples/hotfix_gtk_dbg.rb
106
421
  - samples/install_win_env.rb
422
+ - samples/lindebug.rb
423
+ - samples/linux_injectsyscall.rb
424
+ - samples/machoencode.rb
425
+ - samples/metasm-shell.rb
426
+ - samples/pe-hook.rb
427
+ - samples/pe-ia32-cpuid.rb
428
+ - samples/pe-mips.rb
429
+ - samples/pe-shutdown.rb
430
+ - samples/pe-testrelocs.rb
107
431
  - samples/pe-testrsrc.rb
432
+ - samples/pe_listexports.rb
433
+ - samples/peencode.rb
434
+ - samples/peldr.rb
108
435
  - samples/preprocess-flatten.rb
109
- - samples/gdbclient.rb
110
- - samples/dbghelp.rb
436
+ - samples/r0trace.rb
437
+ - samples/scan_pt_gnu_stack.rb
111
438
  - samples/scanpeexports.rb
112
- - samples/factorize-headers-peimports.rb
113
- - samples/elf_listexports.rb
114
439
  - samples/shellcode-c.rb
115
- - samples/asmsyntax.rb
116
- - lib/metasm.rb
117
- - lib/metasm/x86_64/decode.rb
118
- - lib/metasm/x86_64/main.rb
119
- - lib/metasm/x86_64/debug.rb
120
- - lib/metasm/x86_64/parse.rb
121
- - lib/metasm/x86_64/opcodes.rb
122
- - lib/metasm/x86_64/encode.rb
123
- - lib/metasm/x86_64/compile_c.rb
124
- - lib/metasm/decode.rb
125
- - lib/metasm/pic16c/decode.rb
126
- - lib/metasm/pic16c/main.rb
127
- - lib/metasm/pic16c/opcodes.rb
128
- - lib/metasm/main.rb
129
- - lib/metasm/sh4/decode.rb
130
- - lib/metasm/sh4/main.rb
131
- - lib/metasm/sh4/opcodes.rb
132
- - lib/metasm/parse_c.rb
133
- - lib/metasm/arm.rb
134
- - lib/metasm/os/main.rb
135
- - lib/metasm/os/gnu_exports.rb
136
- - lib/metasm/os/windows_exports.rb
137
- - lib/metasm/os/linux.rb
138
- - lib/metasm/os/remote.rb
139
- - lib/metasm/os/windows.rb
140
- - lib/metasm/exe_format/main.rb
141
- - lib/metasm/exe_format/dol.rb
142
- - lib/metasm/exe_format/elf_encode.rb
143
- - lib/metasm/exe_format/elf_decode.rb
144
- - lib/metasm/exe_format/shellcode.rb
145
- - lib/metasm/exe_format/mz.rb
146
- - lib/metasm/exe_format/coff_encode.rb
147
- - lib/metasm/exe_format/pe.rb
148
- - lib/metasm/exe_format/macho.rb
149
- - lib/metasm/exe_format/dex.rb
150
- - lib/metasm/exe_format/coff.rb
151
- - lib/metasm/exe_format/bflt.rb
152
- - lib/metasm/exe_format/autoexe.rb
153
- - lib/metasm/exe_format/serialstruct.rb
154
- - lib/metasm/exe_format/xcoff.rb
155
- - lib/metasm/exe_format/a_out.rb
156
- - lib/metasm/exe_format/coff_decode.rb
157
- - lib/metasm/exe_format/nds.rb
158
- - lib/metasm/exe_format/elf.rb
159
- - lib/metasm/parse.rb
160
- - lib/metasm/dynldr.rb
161
- - lib/metasm/ppc/decode.rb
162
- - lib/metasm/ppc/main.rb
163
- - lib/metasm/ppc/parse.rb
164
- - lib/metasm/ppc/opcodes.rb
165
- - lib/metasm/ppc/decompile.rb
166
- - lib/metasm/ppc/encode.rb
167
- - lib/metasm/disassemble.rb
168
- - lib/metasm/gui/dasm_main.rb
169
- - lib/metasm/gui/debug.rb
170
- - lib/metasm/gui/dasm_hex.rb
171
- - lib/metasm/gui/dasm_opcodes.rb
172
- - lib/metasm/gui/dasm_graph.rb
173
- - lib/metasm/gui/qt.rb
174
- - lib/metasm/gui/dasm_funcgraph.rb
175
- - lib/metasm/gui/x11.rb
176
- - lib/metasm/gui/dasm_coverage.rb
177
- - lib/metasm/gui/cstruct.rb
178
- - lib/metasm/gui/dasm_listing.rb
179
- - lib/metasm/gui/win32.rb
180
- - lib/metasm/gui/dasm_decomp.rb
181
- - lib/metasm/gui/gtk.rb
182
- - lib/metasm/mips.rb
183
- - lib/metasm/ia32/decode.rb
184
- - lib/metasm/ia32/main.rb
185
- - lib/metasm/ia32/debug.rb
186
- - lib/metasm/ia32/parse.rb
187
- - lib/metasm/ia32/opcodes.rb
188
- - lib/metasm/ia32/decompile.rb
189
- - lib/metasm/ia32/encode.rb
190
- - lib/metasm/ia32/render.rb
191
- - lib/metasm/ia32/compile_c.rb
192
- - lib/metasm/x86_64.rb
193
- - lib/metasm/disassemble_api.rb
194
- - lib/metasm/gui.rb
195
- - lib/metasm/decompile.rb
196
- - lib/metasm/preprocessor.rb
197
- - lib/metasm/ppc.rb
198
- - lib/metasm/encode.rb
199
- - lib/metasm/ia32.rb
200
- - lib/metasm/mips/decode.rb
201
- - lib/metasm/mips/main.rb
202
- - lib/metasm/mips/parse.rb
203
- - lib/metasm/mips/opcodes.rb
204
- - lib/metasm/mips/encode.rb
205
- - lib/metasm/mips/render.rb
206
- - lib/metasm/mips/compile_c.rb
207
- - lib/metasm/dalvik/decode.rb
208
- - lib/metasm/dalvik/main.rb
209
- - lib/metasm/dalvik/opcodes.rb
210
- - lib/metasm/render.rb
211
- - lib/metasm/compile_c.rb
212
- - lib/metasm/dalvik.rb
213
- - lib/metasm/sh4.rb
214
- - lib/metasm/arm/decode.rb
215
- - lib/metasm/arm/main.rb
216
- - lib/metasm/arm/debug.rb
217
- - lib/metasm/arm/parse.rb
218
- - lib/metasm/arm/opcodes.rb
219
- - lib/metasm/arm/encode.rb
220
- - lib/metasm/arm/render.rb
440
+ - samples/shellcode-dynlink.rb
441
+ - samples/source.asm
442
+ - samples/struct_offset.rb
443
+ - samples/testpe.rb
444
+ - samples/testraw.rb
445
+ - samples/win32genloader.rb
446
+ - samples/win32hooker-advanced.rb
447
+ - samples/win32hooker.rb
448
+ - samples/win32livedasm.rb
449
+ - samples/win32remotescan.rb
450
+ - samples/wintrace.rb
451
+ - tests/all.rb
452
+ - tests/arc.rb
453
+ - tests/dasm.rb
454
+ - tests/dynldr.rb
455
+ - tests/encodeddata.rb
456
+ - tests/expression.rb
457
+ - tests/graph_layout.rb
458
+ - tests/ia32.rb
459
+ - tests/mcs51.rb
460
+ - tests/mips.rb
461
+ - tests/parse_c.rb
462
+ - tests/preprocessor.rb
463
+ - tests/x86_64.rb
221
464
  homepage: http://metasm.cr0.org
222
- licenses:
223
- - GPL-2
465
+ licenses:
466
+ - LGPL-2.1
467
+ metadata: {}
224
468
  post_install_message:
225
469
  rdoc_options: []
226
-
227
- require_paths:
228
- - lib
229
- required_ruby_version: !ruby/object:Gem::Requirement
230
- none: false
231
- requirements:
470
+ require_paths:
471
+ - "."
472
+ required_ruby_version: !ruby/object:Gem::Requirement
473
+ requirements:
232
474
  - - ">="
233
- - !ruby/object:Gem::Version
234
- hash: 3
235
- segments:
236
- - 0
237
- version: "0"
238
- required_rubygems_version: !ruby/object:Gem::Requirement
239
- none: false
240
- requirements:
475
+ - !ruby/object:Gem::Version
476
+ version: '0'
477
+ required_rubygems_version: !ruby/object:Gem::Requirement
478
+ requirements:
241
479
  - - ">="
242
- - !ruby/object:Gem::Version
243
- hash: 3
244
- segments:
245
- - 0
246
- version: "0"
480
+ - !ruby/object:Gem::Version
481
+ version: '0'
247
482
  requirements: []
248
-
249
483
  rubyforge_project:
250
- rubygems_version: 1.7.2
484
+ rubygems_version: 2.7.10
251
485
  signing_key:
252
- specification_version: 3
253
- summary: Metasm is a cross-architecture assembler, disassembler, compiler, linker and debugger in pure Ruby with no dependencies.
254
- test_files: []
255
-
486
+ specification_version: 4
487
+ summary: Metasm is a cross-architecture assembler, disassembler, linker, and debugger.
488
+ test_files:
489
+ - tests/all.rb
490
+ - tests/arc.rb
491
+ - tests/dasm.rb
492
+ - tests/dynldr.rb
493
+ - tests/encodeddata.rb
494
+ - tests/expression.rb
495
+ - tests/graph_layout.rb
496
+ - tests/ia32.rb
497
+ - tests/mcs51.rb
498
+ - tests/mips.rb
499
+ - tests/parse_c.rb
500
+ - tests/preprocessor.rb
501
+ - tests/x86_64.rb