Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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")