Guest User

Untitled

a guest
Apr 19th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. from unicorn import *
  4. from unicorn.x86_const import *
  5. import sys
  6.  
  7. key = ['\r','Z','B','E']
  8.  
  9. def hook_mem_invalid(uc,access,address,size,value,user_data):
  10. if access == UC_MEM_WRITE_UNMAPPED:
  11. print "Missing memory at %08x is being written at %08x" % (address,uc.reg_read(UC_X86_REG_EIP))
  12. elif access == UC_MEM_READ_UNMAPPED:
  13. print "Missing memory at %08x is being read at %08x" % (address,uc.reg_read(UC_X86_REG_EIP))
  14. else:
  15. print "Missing memory at %08x is being fetched at %08x" % (address,uc.reg_read(UC_X86_REG_EIP))
  16. # print "BYE"
  17. uc.emu_stop()
  18.  
  19. def hook_interrupt(uc,intr,userdata):
  20. global key
  21. if intr == 0x80:
  22. ftype = uc.reg_read(UC_X86_REG_AL)
  23. if ftype == 0x4:
  24. fdata_ptr = uc.reg_read(UC_X86_REG_CX)
  25. try:
  26. fdata = uc.mem_read(fdata_ptr,0x10)
  27. except:
  28. fdata = None
  29. print "(SYS_OPEN:%s)" % fdata,
  30. else:
  31. print "(INT80H:OP:%x)" % ftype,
  32. uc.emu_stop()
  33. elif intr == 0x10:
  34. data = uc.reg_read(UC_X86_REG_AL)
  35. sys.stdout.write("%c" % chr(data))
  36. elif intr == 0x16: # WHAT IS THE KEY?
  37. if len(key) == 0:
  38. print "WAITING FOR INPUT AGAIN"
  39. uc.emu_stop()
  40. return
  41. # sys.exit(0)
  42. uc.reg_write(UC_X86_REG_AL,ord(key.pop()))
  43. else:
  44. print "UNHANDLED INTERRUPT %x at %x" % (intr,uc.reg_read(UC_X86_REG_EIP))
  45. uc.emu_stop()
  46. return
  47. # uc.emu_reset()
  48. # print "BYE"
  49. # sys.exit(0)
  50.  
  51. f = open("small","rb")
  52. data = f.read()
  53. f.close()
  54.  
  55. for key_1 in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
  56. for key_2 in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
  57. for key_3 in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
  58. key = list("%c%c%c\r" % (key_1,key_2,key_3))[::-1]
  59. print "%s :" % key,
  60. mu = Uc(UC_ARCH_X86,UC_MODE_16)
  61. mu.hook_add(UC_HOOK_MEM_UNMAPPED, hook_mem_invalid)
  62. mu.hook_add(UC_HOOK_INTR, hook_interrupt)
  63. mu.mem_map(0x7000,0x2000)
  64. mu.mem_write(0x7C00,data)
  65. try:
  66. mu.emu_start(0x7C00,0x7C00 + len(data),timeout=10)
  67. except:
  68. print "fucking fail"
  69. pass
Add Comment
Please, Sign In to add comment