You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
902 B
28 lines
902 B
var keystone = require('.') // Or: require('keystone') if you have installed it
|
|
|
|
console.log('Using keystone ' + keystone.version.major + '.' + keystone.version.minor)
|
|
|
|
var ks, assembly, result
|
|
|
|
// Check if architecture is supported
|
|
if (! keystone.is_arch_supported(keystone.ARCH_X86)) {
|
|
throw 'Warning: X86 architecture not supported by keystone.'
|
|
}
|
|
|
|
// Create a new Keystone instance for X86 64bit
|
|
ks = new keystone.Ks(keystone.ARCH_X86, keystone.MODE_64)
|
|
|
|
// Assemble some instructions
|
|
assembly = 'inc rcx; dec rbx'
|
|
result = ks.asm(assembly)
|
|
console.log('"' + assembly + '"', ':', result.encoding)
|
|
|
|
// Change syntax, assemble some more instructions
|
|
assembly = 'lea rax, [label1]\nnop\nnop\nlabel1:'
|
|
ks.syntax = keystone.OPT_SYNTAX_NASM
|
|
result = ks.asm(assembly)
|
|
console.log('"' + assembly.replace(/\n/g, '; ') + '"', ':', result.encoding)
|
|
|
|
// Close Keystone instance to free resources
|
|
ks.close()
|