转载

IDE+Smalidea插件+Baksmali调试破解APK

下载地址: https://bitbucket.org/JesusFreke/smali/downloads

1.将apk转成smali

java -jar baksmali-2.2.6.jar disassemble 201901231140356079733.apk -o /Users/meetyou/mypojie/src

2.导入AndroidStudio

IDE+Smalidea插件+Baksmali调试破解APK

一直Next!!!

IDE+Smalidea插件+Baksmali调试破解APK

工程创建成功后,在src目录上右键并选择 Mark Directory As——Sources Root

在Module Settings中勾选一个SDK版本,进行构建

旧方法废弃~

这时候,我们要调试某个APP,按照以往的做法,我们需要先

让APP以调试的形式开起来

adb shell am start -D -n com.test.appstore/.AppStoreActivity

然后再进行tcp端口的转发:

查询端口:adb shell ps | grep com.test.appstore

u0_a110 11259 917 2346792 54944 futex_wait_queue_me 0 S com.test.appstore

进行转发:adb forward tcp:8899 jdwp:11259

然后在AS中配置这个转发的tcp端口:8899

然后运行~~~~~~~~!!!!调试,经常报错 这两种错误,你就止步于此了哈

新的调试方案:

首先思考下,我们喜欢这种Android Studio直接打了断点,然后调试的方式,但是为什么,我们现在没办法用。

因为我们用的是smali的语法文件,不是一个完整的Android项目

问题:我们在于找不到那个小虫子的按钮在哪里~

但是这个功能,Android Studio里是存在的,换个思路我们只要找到按钮能启动就行了哈。

---->这边我们从keymap 快捷键入手

设置一下快捷键:我这边是设置成这样,然后Ok即可,接下来就可以享受超级好的交互体验了。

1.一样需要启动app并且等待调试。

adb shell am start -D -n com.test.appstore/.AppStoreActivity

(当然,apk在xml里可能设置不可调试,这种情况要么用打包改xml(可能失败),要么用xposed hook掉直接改成可调试状态)

//https://github.com/deskid/XDebug 让所有进程处于可以被调试的状态

XposedBridge.hookAllMethods(Process.class, “start”, debugAppsHook);

private static final int DEBUG_ENABLE_DEBUGGER = 0x1;

private XC_MethodHook debugAppsHook = new XC_MethodHook() {

@Override

protected void beforeHookedMethod(MethodHookParam param)

throws Throwable {

XposedBridge.log("-- beforeHookedMethod :" + param.args[1]);

int id = 5;

int flags = (Integer) param.args[id];

if ((flags & DEBUG_ENABLE_DEBUGGER) == 0) {

flags |= DEBUG_ENABLE_DEBUGGER;

}

param.args[id] = flags;

}

};

2.按下设置好的快捷键,选中App进程,按下OK

(如果你这边是这样,那很不幸,你还需要多做一步比较复杂的操作)

一切来得这么突然~~~~~~~!

原文  https://blog.csdn.net/ljphhj/article/details/93593229
正文到此结束
Loading...