Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AttributeError: 'Emulator' object has no attribute 'uc' #75

Open
gaplan opened this issue Sep 4, 2022 · 2 comments
Open

AttributeError: 'Emulator' object has no attribute 'uc' #75

gaplan opened this issue Sep 4, 2022 · 2 comments

Comments

@gaplan
Copy link

gaplan commented Sep 4, 2022

when i try python3 example.py

here is the result.

OSAs-MacBook-Pro-2:examples osapoza$ python3 example.py 
2022-09-05 02:56:21,163   DEBUG        androidemu.internal.modules | Loading module 'example_binaries/32/libc.so'.
2022-09-05 02:56:21,175   DEBUG         androidemu.internal.memory | => Mapping memory page 0xcbbcb000 - 0xcbc57000, size 0x0008c000, prot 5
2022-09-05 02:56:21,176   DEBUG         androidemu.internal.memory | => Mapping memory page 0xcbc58000 - 0xcbc66000, size 0x0000e000, prot 3
2022-09-05 02:56:21,199   ERROR        androidemu.internal.modules | => Undefined external symbol: android_get_application_target_sdk_version
2022-09-05 02:56:21,199   ERROR        androidemu.internal.modules | => Undefined external symbol: dl_unwind_find_exidx
2022-09-05 02:56:21,989   ERROR        androidemu.internal.modules | => Undefined external symbol: android_get_application_target_sdk_version
2022-09-05 02:56:21,990   ERROR        androidemu.internal.modules | => Undefined external symbol: dl_unwind_find_exidx
2022-09-05 02:56:22,383   DEBUG        androidemu.internal.modules | Loading module 'example_binaries/32/libnative-lib.so'.
2022-09-05 02:56:22,386   DEBUG         androidemu.internal.memory | => Mapping memory page 0xcbc66000 - 0xcbc69000, size 0x00003000, prot 5
2022-09-05 02:56:22,386   DEBUG         androidemu.internal.memory | => Mapping memory page 0xcbc69000 - 0xcbc6b000, size 0x00002000, prot 3
2022-09-05 02:56:22,404    INFO                           __main__ | Loaded modules:
2022-09-05 02:56:22,404    INFO                           __main__ | [0xcbbcb000] example_binaries/32/libc.so
2022-09-05 02:56:22,404    INFO                           __main__ | [0xcbc66000] example_binaries/32/libnative-lib.so
Traceback (most recent call last):
  File "/Users/osapoza/Downloads/AndroidNativeEmu-master 2/examples/example.py", line 38, in <module>
    emulator.uc.hook_add(UC_HOOK_CODE, hook_code)
AttributeError: 'Emulator' object has no attribute 'uc'

python version :
Python 3.9.0 (default, Nov 21 2020, 14:01:55)

@enovella
Copy link

enovella commented Nov 6, 2022

$ git diff
diff --git a/examples/example.py b/examples/example.py
index 0d29fc0..811dbc6 100644
--- a/examples/example.py
+++ b/examples/example.py
@@ -35,9 +35,9 @@ def hook_code(uc, address, size, user_data):
     print('# Tracing instruction at 0x%x, instruction size = 0x%x, instruction = %s' % (address, size, instruction_str))
 
 
-emulator.uc.hook_add(UC_HOOK_CODE, hook_code)
+emulator.mu.hook_add(UC_HOOK_CODE, hook_code)
 
 # Runs a method of "libnative-lib.so" that calls an imported function "strlen" from "libc.so".
 emulator.call_symbol(lib_module, '_Z4testv')
 
-print("String length is: %i" % emulator.uc.reg_read(UC_ARM_REG_R0))
+print("String length is: %i" % emulator.mu.reg_read(UC_ARM_REG_R0))

@taozhiyu
Copy link

$ git diff
diff --git a/examples/example.py b/examples/example.py
index 0d29fc0..811dbc6 100644
--- a/examples/example.py
+++ b/examples/example.py
@@ -35,9 +35,9 @@ def hook_code(uc, address, size, user_data):
     print('# Tracing instruction at 0x%x, instruction size = 0x%x, instruction = %s' % (address, size, instruction_str))
 
 
-emulator.uc.hook_add(UC_HOOK_CODE, hook_code)
+emulator.mu.hook_add(UC_HOOK_CODE, hook_code)
 
 # Runs a method of "libnative-lib.so" that calls an imported function "strlen" from "libc.so".
 emulator.call_symbol(lib_module, '_Z4testv')
 
-print("String length is: %i" % emulator.uc.reg_read(UC_ARM_REG_R0))
+print("String length is: %i" % emulator.mu.reg_read(UC_ARM_REG_R0))

it works.

TL;DR: replace all emulator.uc. by emulator.mu.

The reason for putting . at the end while replacing is to prevent incorrect substitution

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants