19 January 2012

Python hex -> int -> str

import binascii

x=11
print x        #>>  11
print int(x)    #>>  11
print hex(x)      #>> 0xb
print str(x)    #>>  11

x="11"
print x        #>>  11
print int(x)    #>>  11
print hex(x)      #>> ERROR
print str(x)    #>>  11

x=0x11
print x           #>> 17
print int(x)     #>> 17
print hex(x)      #>> 0x11
print str(x)      #>> 17

x = "0x17"
print x        #>> 0x17
print int(x)     #>> ERROR
print hex(x)   #>> ERROR  hex(int)
print str(x)    #>> "0x17"

x="11"
print int(x)        #>>        11
print int(x,2)        #>>        3
print int(x,8)        #>>        9
print int(x,10)    #>>        11
print int(x,16)    #>>        17

x=11
print int(x)        #>>        11
print int(x,2)        #>>  ERROR
print int(x,8)        #>>  ERROR
print int(x,10)    #>>  ERROR
print int(x,16)    #>>  ERROR

x="48454c4C61"
print binascii.unhexlify(x)  #>>    HELLa

x='a'
print ord(x)        #>> 97
print hex(ord(x))    #>> 0x61

18 January 2012

file offset vs RVA dalam kepala Pi'e (PE Header)

perbincangan mengenai PE(protable executable) Header.

CFF explorer boleh listkan export function utk sebarang dll, nama dan alamat(RVA). Bagaimana nak convert rva ke file offset.

1) pastikan lokasi rva tersebut dalam section mana
    a) 'Section Headers'(dlm CFF) menyenaraikan senarai section yg ada. Gunakan kolum 'Virtual Address'(sebenarnya rva address) dan Virtual size. Contoh RVA=0x6380.

   Berdasarkan rajah di atas, 0X6380 berada dalam section '.text'(bermula pada 0x1000 bersaiz 0x2A19B).

2)  file offset = RVA - (section rva start) + (section raw address)
                     = 0x6380 - 0x1000 + 0x400
                     = 0x5780


ps: boleh semak guna 'Address Converter' dlm CFF

11 January 2012

signed integer

untuk signed integer, nilai (dalam) bits tidak berkadar langsung dengan nilai integer.

Integer 8 bit, 0 hingga 01111111(2)  adalah 0 hingga 127(10).  Seterusnya 10000000(2) hingga 11111111(2) adalah -128(10) hingga -1(10).

Integer 32 bit pula, 0x00000000 hingga 0x0ffffffff adalah 0 hingga +2,147,483,647. Seterusnya 0x80000000 hingga 0xffffffff adalah -2,147,483,648 hingga -1.