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