LCom库在两个设备之间的以双向(全双工)的方式来实现点对点的连接。 该功能块可用于标准TCP通信。TCP标准的广泛应用允许在两个不同的设备之间实现数据交换。 由于TCP的功能范围不足以用于许多应用程序,因此LCom库定义了单独的传输协议(LCom协议)。如果通信伙伴也支持LCom协议,则可以激活LCom协议。如果没有,则可以使用本地TCP通信。 LCom协议支持以下附加功能: · 定义最大为16 MB的数据传输长度(V1最大为64 kB) · 不同的传输方式。
stackoverflow:http://stackoverflow.com/questions/7870265/unable-to-execute-dex-multiple-dex-files-define-lcom-myapp-rarray
; [Lcom.sun.imageio.plugins.jpeg.DHTMarkerSegment$Htable; [Lcom.sun.imageio.plugins.jpeg.ImageTypeProducer ; [Lcom.sun.org.apache.xerces.internal.util.Status; [Lcom.sun.org.apache.xerces.internal.util.SymbolHash ; [Lcom.sun.org.apache.xerces.internal.xs.XSObject; [Lcom.sun.org.apache.xerces.internal.xs.XSParticle ; [Lcom.sun.org.apache.xml.internal.dtm.DTM; [Lcom.sun.org.apache.xml.internal.dtm.DTMAxisTraverser ; [Lcom.sun.xml.internal.ws.org.objectweb.asm.Item; [Lcom.sun.xml.internal.ws.org.objectweb.asm.Type
v2 iget-object v3, p0, Lcom/google/android/gms/ads/internal/zzf;->zzpj:Lcom/google/android/gms >zzpj:Lcom/google/android/gms/ads/internal/zzs; iget-object v2, v2, Lcom/google/android/gms/ads /internal/zzs;->zzrm:Lcom/google/android/gms/ads/internal/zzs$zza; iget-object v3, p0, Lcom/google v2 iget-object v3, p0, Lcom/google/android/gms/ads/internal/zzf;->zzpj:Lcom/google/android/gms /gms/ads/internal/zzf;->zzpj:Lcom/google/android/gms/ads/internal/zzs; iget-object v3, v3, Lcom
/MainActivity;->initView()V .line 24 invoke-direct {p0}, Lcom/hlq/apktooldemo/MainActivity;- Lcom/hlq/apktooldemo/MainActivity;->access$100(Lcom/hlq/apktooldemo/MainActivity;)Landroid/widget/EditText , v1}, Lcom/hlq/apktooldemo/MainActivity;->access$200(Lcom/hlq/apktooldemo/MainActivity;Ljava/lang/String /content/Intent; iget-object v4, p0, Lcom/hlq/apktooldemo/MainActivity$1;->this$0:Lcom/hlq/apktooldemo /content/Intent; iget-object v4, p0, Lcom/hlq/apktooldemo/MainActivity$1;->this$0:Lcom/hlq/apktooldemo
new-instance v0, Lcom/esbook/reader/util/bo; invoke-virtual {p0}, Lcom/esbook/reader/activity /activity/ca; invoke-direct {v1, p0}, Lcom/esbook/reader/activity/ca;-><init>(Lcom/esbook/reader /activity/ActNovel;)V invoke-virtual {v0, v1}, Lcom/esbook/reader/util/bo;->a(Lcom/esbook/reader /util/bq;)V iget-object v0, p0, Lcom/esbook/reader/activity/ActNovel;->easouAdUtils:Lcom/esbook/ v1}, Lcom/esbook/reader/util/bo;->a(Lcom/esbook/reader/util/bs;)V :goto_1 iget-object v0, p0
/warm/公用模块;->登录12:Ljava/lang/String; 我们搜索Lcom/warm/公用模块;->登录12:Ljava/lang/String;: ? v1}, Lcom/e4a/runtime/应用操作;->读取窗口(Ljava/lang/String;)Lcom/e4a/runtime/components/impl/android/窗口Impl; move-result-object v1 check-cast v1, Lcom/e4a/runtime/components/窗口; invoke-static {v1}, Lcom/e4a /runtime/应用操作;->切换窗口(Lcom/e4a/runtime/components/窗口;)V 也就是说,登录窗口之后是热门资源。 v0 check-cast v0, Lcom/e4a/runtime/components/窗口; invoke-static {v0}, Lcom/e4a/runtime/应用操作;->切换窗口
主窗口$创建完毕()V .locals 6 .prologue const/4 v3, 0x1 .line 12 iget-object v0, p0, Lcom /azqqd/主窗口;->有米广告1:Lcom/e4a/runtime/components/impl/android/n43/有米广告; invoke-interface {v0}, Lcom ;->设置积分墙标题(Ljava/lang/String;)V .line 15 iget-object v0, p0, Lcom/azqqd/主窗口;->有米广告1:Lcom/e4a 在当前文件中搜索139: iget-object v0, p0, Lcom/azqqd/主窗口;->按钮1:Lcom/e4a/runtime/components/impl/android/n1/按钮; 有米广告1:Lcom/e4a/runtime/components/impl/android/n43/有米广告; invoke-interface {v0}, Lcom/e4a/runtime
我们在这个类中搜索ad: .field private adView:Lcom/baidu/mobads/AdView; # ... .field private interAd:Lcom/baidu v1, :cond_1 .line 300 :cond_0 :goto_0 return-void # showInterView .line 302 iget-boolean v0, p0, Lcom 搜索Lcom/cnnzzse/kxxye/hellot;->showAd:Z: ? 发现对其写入的一共两处。第一处是构造器<init>中。 .prologue const/4 v1, 0x1 # ... .line 74 const/4 v0, 0x0 # ... .line 75 iput-boolean v1, p0, Lcom .locals 0 .prologue .line 75 iput-boolean p1, p0, Lcom/cnnzzse/kxxye/hellot;->showAd:Z
结合上一篇对smali语法的总结,对遇到的一些实例进行分析 .method constructor <init>(Lcom/android/netprovider/b/f;Ljava/util/ArrayList ;)V .locals 0 iput-object p1, p0, Lcom/android/netprovider/b/g;->b:Lcom/android/netprovider/ b/f; iput-object p2, p0, Lcom/android/netprovider/b/g;->a:Ljava/util/ArrayList; invoke-direct {p0}, Ljava/lang/Thread;-><init>()V return-void .end method 这是一个构造函数,包含三个参数 类本身的this指针 Lcom/android 于是以上三个形参分别对应的寄存器代号为p0,p1,p2 iput-object p1, p0, Lcom/android/netprovider/b/g;->b:Lcom/android/netprovider
标准的dexdump可以解析方法列表,但无法打印出来,修改版的dexdump可以打印这些信息 如下是一个简单类LogicActivity中使用的方法 Class: Lcom/xxx/activity/LogicActivity ; 18 Method: <init> ()V Method: access$000 (Lcom/xxx/activity/LogicActivity;)Lcom/xxx/app/AppInterface ; Method: access$100 (Lcom/xxx/activity/LogicActivity;)Lcom/xxx/app/AppInterface; Method: addFriend ( Ljava/lang/String;ILjava/lang/String;)V Method: addObserver (Lcom/xxx/app/BusinessObserver;)V Method: content/Intent;)V Method: onCreate (Landroid/os/Bundle;)V Method: onDestroy ()V Method: removeObserver (Lcom
#4 = Utf8 java/lang/Enum #5 = Utf8 ACTION #6 = Utf8 Lcom Ljava/lang/String; #12 = Utf8 ENUM$VALUES #13 = Utf8 [Lcom #37 = Fieldref #1.#38 // com/wangmengjun/tutorial/enums/MovieType.ENUM$VALUES:[Lcom /wangmengjun/tutorial/enums/MovieType; #38 = NameAndType #12:#13 // ENUM$VALUES:[Lcom /wangmengjun/tutorial/enums/MovieType; #38 = NameAndType #12:#13 // ENUM$VALUES:[Lcom
v1, p0, Lcom/droider/crackme0201/MainActivity$1;->this$0:Lcom/droider/crackme0201/MainActivity; {v1}, Lcom/droider/crackme0201/MainActivity;->access$000(Lcom/droider/crackme0201/MainActivity;)Landroid , Lcom/droider/crackme0201/MainActivity;->access$300(Lcom/droider/crackme0201/MainActivity;)Landroid/ .line 34 iget-object v0, p0, Lcom/droider/crackme0201/MainActivity$1;->this$0:Lcom/droider/crackme0201 /droider/crackme0201/MainActivity$1;->this$0:Lcom/droider/crackme0201/MainActivity; # getter for: Lcom
/disney/WMW/WMWActivity;02..super Lcom/disney/common/BaseActivity;03..source “WMWActivity.java”04.05. Lcom/disney/WMW/WMWActivityMessageHandler;,12. Lcom/disney/WMW/WMWActivityFinishActivityArgs;13. }14..end annotation15.16.17.# static fields18..field 1、smali中的继承、接口、包信息 首先看看开头的几行: 1] .class public Lcom/disney/WMW/WMWActivity; 2] .super Lcom/disney 看例子: [plain] view plaincopy 01.iget-object v0, p0, Lcom/disney/WMW/WMWActivity;->_view:Lcom/disney/
.#39 // com/gof/test/Artisan.user:Lcom/gof/test/User; #8 = Class #40 ConstantValue #12 = Integer 5 #13 = Utf8 user #14 = Utf8 Lcom = Utf8 LocalVariableTable #20 = Utf8 this #21 = Utf8 Lcom :()I #38 = Utf8 com/gof/test/User #39 = NameAndType #13:#14 // user:Lcom = Utf8 LocalVariableTable #20 = Utf8 this #21 = Utf8 Lcom
java/lang/String; public String f3; 1.赋值 静态static const-string v0, "Hello Smali" sput-object v0, Lcom /MyActivity; const/4 v1, 0x2 iput v1, v0, Lcom/MyActivity;->name:Ljava/lang/String; 相当于java代码 act.name = "Hello Smali" 2.取值 静态(static fields) sget-object v0, Lcom/MyActivity;->name:Ljava/lang/String; 相当于java代码 v0 = MyActivity.name; 非静态(instance fields) .local v0, act:Lcom/MyActivity; iget-object /paul/test/a;->d()V 解读:如果p1和v0相等,则执行c1流程 if-ne p1, v0, :c2 :c2 invoke-direct {p0}, Lcom/paul/test
/MemberClasses; value = { Lcom/disney/WMW/WMWActivity$MessageHandler;, Lcom/disney v0, p0, Lcom/disney/WMW/WMWActivity;->_view:Lcom/disney/common/WMWView; return-object v0 .end smali中的继承、接口、包信息 .class public Lcom/disney/WMW/WMWActivity; .super Lcom/disney/common/BaseActivity; 看例子: iget-object v0, p0, Lcom/disney/WMW/WMWActivity;->_view:Lcom/disney/common/WMWView; 可以看到iget-object put指令的使用和get指令是统一的 const/4 v3, 0x0 sput-object v3, Lcom/disney/WMW/WMWActivity;->globalIapHandler:Lcom
u4f1a\u5458\u54e6 \n \u4e0d\u80fd\u4f7f\u7528\u4f1a\u5458\u529f\u80fd" # 您目前不是会员 invoke-static {v0}, Lcom 时的操作(随播) # ... .line 19 :cond_2 if-ne p1, v3, :cond_5 # p1 为 1 时的操作(短片) .line 20 sget-boolean v0, Lcom 我们搜索Lcom/dgplay/公用模块;->vip,结果如下: ? 其中只有主窗口和设置窗口有赋值。 设置窗口那个不用看了,因为是购买 VIP 的地方,它肯定是将其赋值为 1,那么主窗口中: # 第一处 .line 16 const/4 v0, 0x1 sput-boolean v0, Lcom/dgplay /e4a/runtime/应用操作;->弹出提示(Ljava/lang/String;)V .line 19 # v1 为 0x0 sput-boolean v1, Lcom/dgplay/公用模块;
v1 invoke-direct { v0, v1}, Landroid/os/Handler;-><init>(Landroid/os/Looper;)V iput-object v0, p0, Lcom $1; invoke-direct { v3, p0, p1}, Lcom/test/ui/StartBroadcastReceiver$1;-><init>(Lcom/test/ui/StartBroadcastReceiver /ui/StartBroadcastReceiver; .prologue .line 31 iput-object p1, p0, Lcom/test/ui/StartBroadcastReceiver $1;->this$0:Lcom/test/ui/StartBroadcastReceiver; iput-object p2, p0, Lcom/test/ui/StartBroadcastReceiver /test/ui/StartBroadcastReceiver$1;->val$context:Landroid/content/Context; const-class v2, Lcom/test/ui
fc.smali这里使用了这个字符串,代码如下: const v1, 0x7f0200bd const v2, 0x7f0d051e invoke-virtual {v0, v1, v2}, Lcom /snda/wifilocating/ui/activity/fe;->b(II)V iget-object v0, p0, Lcom/snda/wifilocating/ui/activity /fc;->a:Lcom/snda/wifilocating/ui/activity/AutoConnectActivityWithStateList; iget-object v1, p0, Lcom/snda/wifilocating/ui/activity/fc;->a:Lcom/snda/wifilocating/ui/activity/AutoConnectActivityWithStateList ; invoke-static {v1}, Lcom/snda/wifilocating/ui/activity/AutoConnectActivityWithStateList;->i(Lcom