Android逆向编程

一、加固

APP应用加固 | 几维安全

联系我们--安天 智者安天下

你不知道的Android SDK安全测试 - CSDN博客

二、逆向编程

国内最权威的逆向论坛

逆向专家

https://github.com/android-hacker
https://blog.csdn.net/qq_21051503

逆向工具介绍

百度了很多资料,发现集成的逆向工具有很多,如APKKiller、APKIDE等,但是发现不是很好用,兼容性太差,没有一个可以重新编译打包成功的。这些集成的工具,其实就是写了些脚本,复用了一下Google官方的APKTool的一系列工具而已。

[原创]记某app内购破解 – 安卓逆向菜鸟的初体验
https://bbs.pediy.com/thread-226040.htm

Android Killer:是一款可以对APK进行反编译的工具,它能够对反编译后的Smali文件进行修改,并将修改后的文件进行打包https://www.jianshu.com/p/61a93a6c0c1b,虽然它对360脱壳没有啥作用,但是它的Android相关的一些功能还是比较实用的,比如目录浏览等 。

下面我介绍一下用原生的工具如何进行反编译与重新打包的。

一、ApkTool

下载

可以参照这个博客:
https://blog.csdn.net/dreamer2020/article/details/52761606
https://www.jianshu.com/p/47a5511e17bf

但是apktool.bat与apktool.jar我建议去官方下载最新的
首页:https://ibotpeaches.github.io/Apktool/
怎么安装:https://ibotpeaches.github.io/Apktool/install/

image.png

文档说的很清楚,其实中国APKtool的博客鼻祖,就是照着这个翻译的。

使用

apktool.bat,注意win10在命令行运行时要加上.\,否则会报错如下:


image.png

其实最后的提示已经告诉我我们答案。

  • 反编译
       .\apktool.bat d  -f   E:\ApkNiXiang\MyTool\source\in\cn.wangxiao.zhuntiku_4.0_43.apk  -o E:\ApkNiXiang\MyTool\source\out
    

参数说明:
d:表示执行反编译指令
-f:输出目录存在,也会强制覆盖,不会提示。
E:\ApkNiXiang\MyTool\source\in\cn.wangxiao.zhuntiku_4.0_43.apk:要反编译的APK
-o:指定输出目录
E:\ApkNiXiang\MyTool\source\out:反编译后的文件的输出根目录

  • 重新编译打包(回编译)
    .\apktool.bat b -o E:\ApkNiXiang\MyTool\source\rebuild E:\ApkNiXiang\MyTool\source\out
    

参数说明:
d:表示执行编译指令,将反编译后的文件重新打包。
-o:指定输出目录
E:\ApkNiXiang\MyTool\source\rebuild:指定打包后的apk的生成目录
E:\ApkNiXiang\MyTool\source\out:反编译后的文件的输出根目录
执行重新编译打包的过程,不同的APK,不同的开发人员可能会有各种错误导致不成功,建议首先将apktool文件更新到最新,然后再看提示。下面说说我遇到的坑(所有的坑都是以破解“准题库"app为例的)。
坑1: 提示 “error: Resource entry chapter_home_page_gravity already has bag item android:textColor.”

image.png

这个错误提示着十分明显了,哪个文件,哪一行,什么问题。我就找到那个文件:
image.png

发现果然属性定义有重复,那么删除一行重新编译。
这种问题,就属于开发人员代码不规范的问题了。
坑2: style继承
image.png

找到问题文件:
image.png

"Base.V7.Theme.AppCompat.Light"继承了“style/Platform.AppCompat.Light”对某个属性重新赋值就会出现这个问题。
我尝试着把 "Base.V7.Theme.AppCompat.Light"的所有重新赋值的item注释掉,发现新的其它的有继承关系的布局又出现问题了,根本改不完,改完了也不知道会有啥问题。
坑3: 真正致命的问题
其实坑1,坑2还只是W级别的警告,真正致命的是下面的错误:
image.png

针对这个问题及坑2的问题,网上找到一个缓兵之计:
https://blog.csdn.net/m0_37750720/article/details/82832915
就是执行反编译(解包)指令的时候,加一个-r参数,这样就不会解资源文件,回编译的时候也就不会出现问题。但是由于没有解资源文件,所以所有的资源文件都是乱码的。
关于乱码的问题其实官方文档早就作了说明https://ibotpeaches.github.io/Apktool/documentation/,apk直接解压出来资源文件就是乱码的(不光光是中文乱码,英文也有乱码。),apktool扮演的就是解码的角色。
坑4: Exception in thread "main" org.jf.util.ExceptionWithContext: Encountered small uint that is out of range at offset 0x38
反编译一款叫做“伊对”的相亲app,然后就会遇到下面问题。
image.png

然后百度了些相关资料 :
https://blog.csdn.net/changcsw/article/details/51581051
将apktool升级到最新的2.14.1,还是报错,换了个提示:
image.png

注意到assets目录下有一个A3AEECD8.dex,应该是这个dex文件格式不对。我把这个文件从apk中移除,然后重新反编译能通过,重新签名后也能安装成功,但是打不开。我想着这个应该是哪家加密工具给加密了,反正不是某数字公司的加固方式。

另外,反编译“全民K歌”也是出现这个错误。

2019-10-22 14:17:06.203 2684-3389/? W/ziparchive: Unable to open '/data/app/cn.wangxiao.zhuntiku-WoI77OMcp7yg9WMUFO_bEQ==/base.apk': No such file or directory
2019-10-22 14:17:06.203 2684-3389/? E/ResourcesManager: failed to add asset path /data/app/cn.wangxiao.zhuntiku-WoI77OMcp7yg9WMUFO_bEQ==/base.apk
2019-10-22 14:17:06.203 2684-3389/? W/PackageManager: Failure retrieving resources for cn.wangxiao.zhuntiku
2019-10-22 14:17:06.210 19612-19612/? D/AndroidRuntime: Shutting down VM
    
    
    --------- beginning of crash
2019-10-22 14:17:06.210 19612-19612/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: cn.wangxiao.zhuntiku, PID: 19612
    java.lang.UnsatisfiedLinkError: JNI_ERR returned from JNI_OnLoad in "/data/data/cn.wangxiao.zhuntiku/.jiagu/libjiagu.so"
        at java.lang.Runtime.load0(Runtime.java:928)
        at java.lang.System.load(System.java:1633)
        at com.stub.StubApp.attachBaseContext(SourceFile:233)
        at android.app.Application.attach(Application.java:231)
        at android.app.Instrumentation.newApplication(Instrumentation.java:1125)
        at android.app.LoadedApk.makeApplication(LoadedApk.java:1080)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6181)
        at android.app.ActivityThread.access$1200(ActivityThread.java:232)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1839)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:224)
        at android.app.ActivityThread.main(ActivityThread.java:7076)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
2019-10-22 14:17:06.213 1707-3764/? W/ActivityManager:   Force finishing activity cn.wangxiao.zhuntiku/app.wangxiao.cn.page_module.SplashActivity

上面报资源文件的错误,下面报.so的错误(好像是用什么加固工具了)。
我自己写了个apk,然后签名,不用第3方加固工具加固。重复以上步骤。发现可以正常运行,也没有报错。(所以不要一上手就扬言要破译哪个APK,先自己搞个APK试试,毕竟自己有源码,可以对比学习。)

所以,不混淆,不使用加固工具加固的APP没有安全性可言!

  • 修改反编译出来的源码
    其实这个就是我研究逆向编程的初衷:有一个考试软件,一些课程需要收费,我想着是不是能找到它的漏洞,绕过支付的流程,直接观看它的课程。
    那么,常见的修改会有2种情况:
  • 1)修改资源文件
    像前面的使用-r参数才回编译成功,所以想要修改资源文件,必须解决上面所说到的问题。
    但是为了演示,自己测试用,用自己的APK,可以先不加-r改改布局然后回编译,看看是否生效。
    我尝试着改了一下app_name,但是又出现了坑3的问题,不改就不会出现。各种猜想各种试,最后重启电脑问题才解决,所以缓存绝对是apktool的一个巨坑

apk反编译出dex文件

apktool.bat -s d crackme02.apk

二、Jadx

这个工具主要是用来分析源码

下载

https://www.softpedia.com/get/Programming/Other-Programming-Files/Jadx.shtml

使用教程

https://www.jianshu.com/p/e5b021df2170

三、逆向实践

https://www.jianshu.com/p/683720bdfa58
https://bbs.pediy.com/user-592070.htm (脱壳专家)

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

推荐阅读更多精彩内容