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_第1张图片

一直Next!!!

IDE+Smalidea插件+Baksmali调试破解APK_第2张图片

工程创建成功后,在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

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

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

你可能感兴趣的:(胖虎Android之旅)