Sha256: 2a5918f619e47c336610b6665ce5fa5c45a084dc89dce2dbdf9604f3ac19f9e6
Contents?: true
Size: 859 Bytes
Versions: 2
Compression:
Stored size: 859 Bytes
Contents
# This file is part of Metasm, the Ruby assembly manipulation suite # Copyright (C) 2006-2009 Yoann GUILLOT # # Licence is LGPL, see LICENCE in the top-level directory require 'test/unit' require 'metasm' class TestDynldr < Test::Unit::TestCase def test_dynldr str = "1234" d = Metasm::DynLdr d.new_api_c('int memcpy(char*, char*, int)') d.memcpy(str, "9999", 2) assert_equal('9934', str) c_src = <<EOS int sprintf(char*, char*, ...); void fufu(int i, char* ptr) { sprintf(ptr, "lolzor %i\\n", i); } EOS buf = 'aaaaaaaaaaaaaaaaaa' d.new_func_c(c_src) { d.fufu(42, buf) } assert_equal("lolzor 42\n\000aaaaaaa", buf) if d.host_cpu.shortname == 'ia32' ret = d.new_func_asm('int __fastcall bla(int)', "lea eax, [ecx+1]\nret") { d.bla(42) } assert_equal(43, ret) assert_equal(false, d.respond_to?(:bla)) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
metasm-1.0.1 | tests/dynldr.rb |
metasm-1.0.0 | tests/dynldr.rb |