.smalijava的简单介绍

博主:adminadmin 2022-11-25 08:21:07 56

本篇文章给大家谈谈.smalijava,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

怎么在smali中修改才能注释java代码中的一行

i want to delete the 580th and 581th line in the java code below. this file is in system/framework/services.jar in android devices, so the steps i did are:

1. decompile jar to smali

2. change the smali file

3. recompile the smali file to dex file

4. pack it into services.jar.

5. push services.jar into android mobile phone

The question is on step2, how to change the smali file, i try to delete :line580 and the code below it, but it doesn"t work, when compiling, a nullPointerExecption thrown...and i can see /*error*/ in jd-gui tool

Somebody please give me some advices, i"m totally new to smali, thanks in advance.

100分相送,望大神指点,谢谢

The java code is:

568 public void registerUiTestAutomationService(IBinder owner,

569 IAccessibilityServiceClient serviceClient,

570 AccessibilityServiceInfo accessibilityServiceInfo) {

571 mSecurityPolicy.enforceCallingPermission(Manifest.permission.RETRIEVE_WINDOW_CONTENT,

572 FUNCTION_REGISTER_UI_TEST_AUTOMATION_SERVICE);

573

574 accessibilityServiceInfo.setComponentName(sFakeAccessibilityServiceComponentName);

575

576 synchronized (mLock) {

577 UserState userState = getCurrentUserStateLocked();

578

579 if (userState.mUiAutomationService != null) {

580 throw new IllegalStateException("UiAutomationService " + serviceClient

581 + "already registered!");

582 }

583

584 try {

585 owner.linkToDeath(userState.mUiAutomationSerivceOnwerDeathRecipient, 0);

586 } catch (RemoteException re) {

587 Slog.e(LOG_TAG, "Couldn"t register for the death of a"

588 + " UiTestAutomationService!", re);

589 return;

590 }

591

592 userState.mUiAutomationServiceOwner = owner;

593 userState.mUiAutomationServiceClient = serviceClient;

594

595 // Set the temporary state.

596 userState.mIsAccessibilityEnabled = true;

597 userState.mIsTouchExplorationEnabled = false;

598 userState.mIsEnhancedWebAccessibilityEnabled = false;

599 userState.mIsDisplayMagnificationEnabled = false;

600 userState.mInstalledServices.add(accessibilityServiceInfo);

601 userState.mEnabledServices.clear();

602 userState.mEnabledServices.add(sFakeAccessibilityServiceComponentName);

603 userState.mTouchExplorationGrantedServices.add(sFakeAccessibilityServiceComponentName);

604

605 // Use the new state instead of settings.

606 onUserStateChangedLocked(userState);

607 }

608 }

The smali code after decompiling:

.line 579

.local v1, "userState":Lcom/android/server/accessibility/AccessibilityManagerService$UserState;

# getter for: Lcom/android/server/accessibility/AccessibilityManagerService$UserState;-mUiAutomationService:Lcom/android/server/accessibility/AccessibilityManagerService$Service;

invoke-static {v1}, Lcom/android/server/accessibility/AccessibilityManagerService$UserState;-access$300(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Lcom/android/server/accessibility/AccessibilityManagerService$Service;

move-result-object v2

if-eqz v2, :cond_3d

.line 580

new-instance v2, Ljava/lang/IllegalStateException;

new-instance v4, Ljava/lang/StringBuilder;

invoke-direct {v4}, Ljava/lang/StringBuilder;-init()V

const-string v5, "UiAutomationService "

invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;-append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v4

invoke-virtual {v4, p2}, Ljava/lang/StringBuilder;-append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

move-result-object v4

const-string v5, "already registered!"

invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;-append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v4

invoke-virtual {v4}, Ljava/lang/StringBuilder;-toString()Ljava/lang/String;

move-result-object v4

invoke-direct {v2, v4}, Ljava/lang/IllegalStateException;-init(Ljava/lang/String;)V

throw v2

.line 607

.end local v1 # "userState":Lcom/android/server/accessibility/AccessibilityManagerService$UserState;

:catchall_3a

move-exception v2

monitor-exit v3

:try_end_3c

.catchall {:try_start_11 .. :try_end_3c} :catchall_3a

throw v2

.line 585

.restart local v1 # "userState":Lcom/android/server/accessibility/AccessibilityManagerService$UserState;

:cond_3d

:try_start_3d

# getter for: Lcom/android/server/accessibility/AccessibilityManagerService$UserState;-mUiAutomationSerivceOnwerDeathRecipient:Landroid/os/IBinder$DeathRecipient;

invoke-static {v1}, Lcom/android/server/accessibility/AccessibilityManagerService$UserState;-access$1200(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Landroid/os/IBinder$DeathRecipient;

move-result-object v2

const/4 v4, 0x0

invoke-interface {p1, v2, v4}, Landroid/os/IBinder;-linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V

:try_end_45

.catch Landroid/os/RemoteException; {:try_start_3d .. :try_end_45} :catch_74

.catchall {:try_start_3d .. :try_end_45} :catchall_3a

~如果你认可我的回答,请及时点击【采纳为满意回答】按钮

~~手机提问的朋友在客户端右上角评价点【满意】即可。

~你的采纳是我前进的动力

~~O(∩_∩)O,记得好评和采纳,互相帮助,谢谢。

怎样把smali文件转换为java文件

可以先把smali转化为dex文件,然后再用 dex2jar转化一次。我之前也遇到过跟你一样的情况就是这么处理的。祝你好运!

JAVA转换成smali语法

if-eq改成if-ne

if-ne 改成 if-eq

if-eqz改成 if-nez

if-nez 改成if-eqz

如何将 smali 文件i转换成java文件?

可以先把smali转化为dex文件,然后再用

dex2jar转化一次。我之前也遇到过跟你一样的情况就是这么处理的。祝你好运!

-----------------------------------------------------------------------------------------------------

安卓精英团为你解答

安卓精英团欢迎各位精英加入

.smalijava的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、.smalijava的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-25,除非注明,否则均为首码项目网原创文章,转载请注明出处。