邮箱大师 apk 引发的血案

0x00 起因

这是一个很狗血的故事,我们一些同学在做反编译apk的作业,然后呢突然有同学反馈就是说某邮箱大师的apk不能够反编译,出现各种error。当然起初我认为是操作问题或者工具的问题,但是后来经过我自己的实践,发现的确也有这样的问题。然后就开始了狗血之旅。error message如下:

com.googlecode.dex2jar.DexException: while accept method:[La/_;.a()V]
    at com.googlecode.dex2jar.reader.DexFileReader.acceptMethod(DexFileReader.java:694)
    at com.googlecode.dex2jar.reader.DexFileReader.acceptClass(DexFileReader.java:441)
    at com.googlecode.dex2jar.reader.DexFileReader.accept(DexFileReader.java:323)
    at com.googlecode.dex2jar.v3.Dex2jar.doTranslate(Dex2jar.java:85)
    at com.googlecode.dex2jar.v3.Dex2jar.to(Dex2jar.java:261)
    at com.googlecode.dex2jar.v3.Dex2jar.to(Dex2jar.java:252)
    at com.googlecode.dex2jar.v3.Main.doData(Main.java:43)
    at com.googlecode.dex2jar.v3.Main.doData(Main.java:35)
    at com.googlecode.dex2jar.v3.Main.doFile(Main.java:63)
    at com.googlecode.dex2jar.v3.Main.main(Main.java:86)
Caused by: com.googlecode.dex2jar.DexException: while accept code in method:[Landroid/_;.a()V]
    at com.googlecode.dex2jar.reader.DexFileReader.acceptMethod(DexFileReader.java:684)
    ... 9 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 4
    at com.googlecode.dex2jar.v3.V3CodeAdapter.visitUnopStmt(V3CodeAdapter.java:631)
    at com.googlecode.dex2jar.reader.DexOpcodeAdapter.x2x(DexOpcodeAdapter.java:529)
    at com.googlecode.dex2jar.reader.DexCodeReader.acceptInsn(DexCodeReader.java:425)
    at com.googlecode.dex2jar.reader.DexCodeReader.accept(DexCodeReader.java:337)
    at com.googlecode.dex2jar.reader.DexFileReader.acceptMethod(DexFileReader.java:682)
    ... 9 more
Done.

0x01 调查

既然有了这样一个错误,那么自然就开始了Google之旅。通过各种Google之后首先先排除了是dex2jar这个工具的问题。当然这个其中也尝试了其他的各种工具想来替代的使用。比如:

但是可惜的是要么就是只有试用版,要么就是达不到我要的效果,我放弃了投机取巧的方式,还是安安静静地做个美男子去看问题吧。(浪费大把时间。。。。)

既然不换工具,那还是回到了dex文件本身,我大概也了解下结构。

以及反编译之后的结构

那么还是先做了反编译:
java -jar baksmali-2.1.1.jar -o /test/ classes.dex
得到了:

根据我们的错误日志,我们定位到问题就在[La/_;.a()V]这个地方。那么我找到了这个文件,字节码如下:

.class public La/_;
.super Ljava/lang/Object;
.source "a.java"


# virtual methods
.method public a()V
    .registers 2

    .prologue
    .line 5
    double-to-int p3, v0

    move-wide/16 p54870, v0

    .line 6
    .local v0, "i":I
    nop

    .line 7
    return-void
.end method

网络上说看雪上有一种常见的防护机制就是在smali中去写废代码,但是从这个文件中我也没有看到废代码。其实到了这里线索就断了,就不知道应该走了。

0x02 突破

在走投无路的时候突然就想到了是不是有可能保护的机制是一样的,只不过不一定是废代码。那么接下来就是要做的是修改smali文件,将smali转换成dex。使用了

java -jar smali-2.1.1.jar /Users/monkey/Documents/test -o classes.dex

但是无论我修改什么代码貌似都会出现最初出现的那个错误日志,紧接着我使用了老方法,就是传说中的对比。我去下载了其他几种apk,把字节码的结构和邮箱大师的结构做了对比,发现其实其他apk并没有出现.smali这个文件,故而我就怀疑是不是这个文件本身就是阻碍反编译的罪魁祸首。所以我删除了每个文件中的.smali文件,大概有10多个。接着打出dex,然后再用dex2jar对这个新的classes.dex反编译,至少不报错了。

0x03 结果

最后方法都试一样的,使用JD-GUI打开jar文件,可以看到代码了。这一路狗血的一塌糊涂。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容