|
@@ -55,22 +55,22 @@ def parse_elf_header():
|
|
|
|
|
|
if arch == 32:
|
|
|
# 32bit
|
|
|
- hdr_struct = struct.Struct("<HHILLLIHHHHHH")
|
|
|
+ hdr_fmt = "<HHILLLIHHHHHH"
|
|
|
hdr_size = 52
|
|
|
else:
|
|
|
# 64bit
|
|
|
- hdr_struct = struct.Struct("<HHIQQQIHHHHHH")
|
|
|
+ hdr_fmt = "<HHIQQQIHHHHHH"
|
|
|
hdr_size = 64
|
|
|
|
|
|
e_type, e_machine, e_version, e_entry, e_phoff, e_shoff, e_flags,\
|
|
|
e_ehsize, e_phentsize, e_phnum, e_shentsize, e_shnum, e_shstrndx =\
|
|
|
- hdr_struct.unpack(elf_header[16:hdr_size])
|
|
|
+ struct.unpack(hdr_fmt, elf_header[16:hdr_size])
|
|
|
|
|
|
def change_interpreter(elf_file_name):
|
|
|
if arch == 32:
|
|
|
- ph_struct = struct.Struct("<IIIIIIII")
|
|
|
+ ph_fmt = "<IIIIIIII"
|
|
|
else:
|
|
|
- ph_struct = struct.Struct("<IIQQQQQQ")
|
|
|
+ ph_fmt = "<IIQQQQQQ"
|
|
|
|
|
|
""" look for PT_INTERP section """
|
|
|
for i in range(0,e_phnum):
|
|
@@ -79,11 +79,11 @@ def change_interpreter(elf_file_name):
|
|
|
if arch == 32:
|
|
|
# 32bit
|
|
|
p_type, p_offset, p_vaddr, p_paddr, p_filesz,\
|
|
|
- p_memsz, p_flags, p_align = ph_struct.unpack(ph_hdr)
|
|
|
+ p_memsz, p_flags, p_align = struct.unpack(ph_fmt, ph_hdr)
|
|
|
else:
|
|
|
# 64bit
|
|
|
p_type, p_flags, p_offset, p_vaddr, p_paddr, \
|
|
|
- p_filesz, p_memsz, p_align = ph_struct.unpack(ph_hdr)
|
|
|
+ p_filesz, p_memsz, p_align = struct.unpack(ph_fmt, ph_hdr)
|
|
|
|
|
|
""" change interpreter """
|
|
|
if p_type == 3:
|
|
@@ -104,9 +104,9 @@ def change_interpreter(elf_file_name):
|
|
|
|
|
|
def change_dl_sysdirs():
|
|
|
if arch == 32:
|
|
|
- sh_struct = struct.Struct("<IIIIIIIIII")
|
|
|
+ sh_fmt = "<IIIIIIIIII"
|
|
|
else:
|
|
|
- sh_struct = struct.Struct("<IIQQQQIIQQ")
|
|
|
+ sh_fmt = "<IIQQQQIIQQ"
|
|
|
|
|
|
""" read section string table """
|
|
|
f.seek(e_shoff + e_shstrndx * e_shentsize)
|
|
@@ -127,7 +127,7 @@ def change_dl_sysdirs():
|
|
|
sh_hdr = f.read(e_shentsize)
|
|
|
|
|
|
sh_name, sh_type, sh_flags, sh_addr, sh_offset, sh_size, sh_link,\
|
|
|
- sh_info, sh_addralign, sh_entsize = sh_struct.unpack(sh_hdr)
|
|
|
+ sh_info, sh_addralign, sh_entsize = struct.unpack(sh_fmt, sh_hdr)
|
|
|
|
|
|
name = sh_strtab[sh_name:sh_strtab.find("\0", sh_name)]
|
|
|
|
|
@@ -181,7 +181,7 @@ def change_dl_sysdirs():
|
|
|
|
|
|
# MAIN
|
|
|
if len(sys.argv) < 4:
|
|
|
- exit(-1)
|
|
|
+ sys.exit(-1)
|
|
|
|
|
|
new_prefix = sys.argv[1]
|
|
|
new_dl_path = sys.argv[2]
|
|
@@ -196,14 +196,14 @@ for e in executables_list:
|
|
|
|
|
|
try:
|
|
|
f = open(e, "r+b")
|
|
|
- except IOError as ioex:
|
|
|
+ except IOError, ioex:
|
|
|
if ioex.errno == errno.ETXTBSY:
|
|
|
print("Could not open %s. File used by another process.\nPlease "\
|
|
|
"make sure you exit all processes that might use any SDK "\
|
|
|
"binaries." % e)
|
|
|
else:
|
|
|
print("Could not open %s: %s(%d)" % (e, ioex.strerror, ioex.errno))
|
|
|
- exit(-1)
|
|
|
+ sys.exit(-1)
|
|
|
|
|
|
arch = get_arch()
|
|
|
if arch:
|