diff --git a/qiling/loader/elf.py b/qiling/loader/elf.py index 9a9e67694..5b44ef570 100644 --- a/qiling/loader/elf.py +++ b/qiling/loader/elf.py @@ -268,7 +268,7 @@ def __push_str(top: int, s: str) -> int: Top of stack remains aligned to pointer size """ - data = s.encode('utf-8') + b'\x00' + data = s.encode('latin') + b'\x00' top = self.ql.mem.align(top - len(data), self.ql.arch.pointersize) self.ql.mem.write(top, data) diff --git a/qiling/os/linux/procfs.py b/qiling/os/linux/procfs.py index 9fbf2a338..11bd623f1 100644 --- a/qiling/os/linux/procfs.py +++ b/qiling/os/linux/procfs.py @@ -42,7 +42,7 @@ def self_auxv(os: 'QlOsLinux') -> QlFsMappedObject: @staticmethod def self_cmdline(os: 'QlOsLinux') -> QlFsMappedObject: - entries = (arg.encode('utf-8') for arg in os.ql.argv) + entries = (arg.encode('latin') for arg in os.ql.argv) cmdline = b'\x00'.join(entries) + b'\x00' return FsMappedStream(r'/proc/self/cmdline', cmdline) @@ -51,7 +51,7 @@ def self_cmdline(os: 'QlOsLinux') -> QlFsMappedObject: def self_environ(os: 'QlOsLinux') -> QlFsMappedObject: def __to_bytes(s: AnyStr) -> bytes: if isinstance(s, str): - return s.encode('utf-8') + return s.encode('latin') return s @@ -73,6 +73,6 @@ def self_map(mem: 'QlMemoryManager') -> QlFsMappedObject: mapinfo = mem.get_mapinfo() for lbound, ubound, perms, label, container in mapinfo: - content += f"{lbound:x}-{ubound:x}\t{perms}p\t0\t00:00\t0\t{container if container else label}\n".encode("utf-8") + content += f"{lbound:x}-{ubound:x}\t{perms}p\t0\t00:00\t0\t{container if container else label}\n".encode("latin") return FsMappedStream(r'/proc/self/map', content)