首页
社区
课程
招聘
[求助]smali跟dex2jar出来的代码对不上
发表于: 2014-11-10 16:23 6711

[求助]smali跟dex2jar出来的代码对不上

2014-11-10 16:23
6711



第一张图是smali的最后几行,第二张图是对应的jar,结果smali都结束了,jar里面的类还可以看到一个枚举类型的函数InfoFlowScore,这是为何?

在所有smali中搜索了arrayOfInfoFlowScore这个关键字,都找不到。这个函数到底藏在哪儿呢。

[峰会]看雪.第八届安全开发者峰会10月23日上海龙之梦大酒店举办!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
找到了,在InfoFlowData$InfoFlowScore.smali里,不好意思,又发了个没意义的帖子。。
2014-11-10 16:40
0
雪    币: 107
活跃值: (78)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
为毛线不用Jeb
2014-11-13 10:05
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
Jeb的Smali跟apktool弄出来的Smali在语法上有些差别,
比如:
private void packageNameCheck()
    {
        com.example.testfor360.MainActivity mm = new com.example.testfor360.MainActivity();
        mm.packageNameCheck();
    }


用Jeb反编译出来是这样的:
.method private packageNameCheck()V
          .registers 2
          .prologue
 new-instance            v0, MainActivity
 invoke-direct           MainActivity-><init>()V, v0
          .local v0, mm:Lcom/example/testfor360/MainActivity;
0000000A  invoke-virtual          MainActivity->packageNameCheck()V, v0
 return-void
.end method


而用Apktool反编译出来是这样的:
.method private packageNameCheck()V
    .locals 1

    .prologue  #代码起始指令
    .line 80
    new-instance v0, Lcom/example/testfor360/MainActivity;

    invoke-direct {v0}, Lcom/example/testfor360/MainActivity;-><init>()V

    .line 81
    .local v0, mm:Lcom/example/testfor360/MainActivity;
    invoke-virtual {v0}, Lcom/example/testfor360/MainActivity;->packageNameCheck()V

    .line 82
    return-void  #返回空
.end method

仅仅这一小段看来,有这些区别:
1.Apktool的smali中所有的类都用了完整路径名(L打头),并且以分号结束,包括后面;-><init>的之前,也加了分号;而Jeb只写了类名,并且不带分号

2.方法调用指令invoke-direct中,Apktool把寄存器放到了前面,并且用open brace "{" 和 close brace"}"括起来了;Jeb把寄存器放到了后面,没有大括号

另外,Apktool里的.line xx在Jeb里没有出现。

为了回编译方便,还是常用apktool。。
2014-11-13 21:32
0
雪    币: 107
活跃值: (78)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
but,这个代码量不大啊,个人觉得,代码量大的话,jeb的跳转,交叉引用这些还是很有用的。还可以方便的查看smali与java的对应关系。
2014-11-14 10:29
0
游客
登录 | 注册 方可回帖
返回
//