diff options
| author | serpilliere <serpilliere@users.noreply.github.com> | 2017-05-10 00:37:09 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-05-10 00:37:09 +0200 |
| commit | 0904a50a1d6735ad7ae6720b9b09c9feddfcd92f (patch) | |
| tree | b4d77d688ae1e8080e54df8940612df7e46bd732 | |
| parent | caa17aa1f2c49647fd1f3215319c416649e8d9d5 (diff) | |
| parent | 1642de594f2eda397026ddd82da1f68901daa0cb (diff) | |
| download | miasm-0904a50a1d6735ad7ae6720b9b09c9feddfcd92f.tar.gz miasm-0904a50a1d6735ad7ae6720b9b09c9feddfcd92f.zip | |
Merge pull request #552 from commial/fix/win_api
Fix/win api
| -rw-r--r-- | miasm2/os_dep/win_api_x86_32.py | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/miasm2/os_dep/win_api_x86_32.py b/miasm2/os_dep/win_api_x86_32.py index d9c659d3..2d10d3d0 100644 --- a/miasm2/os_dep/win_api_x86_32.py +++ b/miasm2/os_dep/win_api_x86_32.py @@ -1371,6 +1371,7 @@ def my_lstrcmp(jitter, funcname, get_str): ret_ad, args = jitter.func_args_stdcall(["ptr_str1", "ptr_str2"]) s1 = get_str(args.ptr_str1) s2 = get_str(args.ptr_str2) + log.info("Compare %r with %r", s1, s2) jitter.func_ret_stdcall(ret_ad, cmp(s1, s2)) @@ -1398,6 +1399,7 @@ def my_strcpy(jitter, funcname, get_str, set_str): ret_ad, args = jitter.func_args_stdcall(["ptr_str1", "ptr_str2"]) s2 = get_str(args.ptr_str2) set_str(args.ptr_str1, s2) + log.info("Copy '%r'", s2) jitter.func_ret_stdcall(ret_ad, args.ptr_str1) @@ -1418,15 +1420,19 @@ def kernel32_lstrcpyn(jitter): ret_ad, args = jitter.func_args_stdcall(["ptr_str1", "ptr_str2", "mlen"]) s2 = jitter.get_str_ansi(args.ptr_str2) - s2 = s2[:args.mlen] - jitter.vm.set_mem(args.ptr_str1, s2) + if len(s2) >= args.mlen: + s2 = s2[:args.mlen - 1] + log.info("Copy '%r'", s2) + jitter.set_str_ansi(args.ptr_str1, s2) jitter.func_ret_stdcall(ret_ad, args.ptr_str1) def my_strlen(jitter, funcname, get_str, mylen): ret_ad, args = jitter.func_args_stdcall(["src"]) src = get_str(args.src) - jitter.func_ret_stdcall(ret_ad, mylen(src)) + length = mylen(src) + log.info("Len of '%r' -> 0x%x", src, length) + jitter.func_ret_stdcall(ret_ad, length) def kernel32_lstrlenA(jitter): |