def wcslen(self, proc, argv, ctx={}): """ size_t wcslen( const wchar_t* wcs ); """ s, = argv string = common.read_wide_string(proc.uc_eng, s) argv[0] = string rv = len(string) return rv
def _putws(self, proc, argv, ctx={}): """ int _putws( const wchar_t *str ); """ s, = argv string = common.read_wide_string(proc.uc_eng, s, 20) argv[0] = string rv = len(string) # print(string) return rv
def wprintf(self, proc, argv, ctx={}): arch = proc.get_arch() if arch == UC_ARCH_X86: fmt, va_list = ApiHandler.get_argv(proc, cv.CALL_CONV_CDECL, 2)[:2] else: raise Exception("Unsupported architecture") rv = 0 fmt_str = common.read_wide_string(proc.uc_eng, fmt) fmt_cnt = self.get_va_arg_count(fmt_str) vargs = self.va_args2(proc, fmt_cnt) fin = common.make_fmt_str(proc, fmt_str, vargs, True) rv = len(fin) argv.append(fin) # print(fin) return rv
def _wtoi(self, proc, argv, ctx={}): pStr, = argv _str = common.read_wide_string(proc.uc_eng, pStr) return int.from_bytes(_str.encode("utf-16le"), "little")