转载

梆梆加固脱壳

查壳

写一个查壳脚本

解压apk->寻找asserts文件中中的so文件–>匹配特征

apkCheckProtect.py

脱壳

Java层 Application入口:

Markup

<application android:name="com.secshell.secData.ApplicationWrapper">

Application调用顺序attachBaseContext->onCreate

Java

protected void attachBaseContext(Context context) {
        super.attachBaseContext(context);
        try {
            ApplicationWrapper.realApplication = this.getClassLoader().loadClass(Helper.APPNAME).newInstance();
            Helper.attach(ApplicationWrapper.realApplication, context);
        }
        catch(Exception e) {
            ApplicationWrapper.realApplication = null;
        }
    }

过反调试

BLX R3patch掉这句就可以了

关键思考点:

怎么在静态情况下,找到此处反调试?

猜想: 通过某些特征,顺藤摸瓜

作者做法: 动调 在dex加载前后寻找关键点

问题1 无法重打包签名:

遇到patch so 之后无法重新打包签名的情况 可以通过直接把so扔进lib中即可

问题2 调试的时候一直挂:

断在loadlibrary的入口处,就不会挂

问题3 脱壳流程不一样:

脱壳记得要清楚数据,因为有可能是写在sd中 走另一套流程

dumpdex关键点:

inflate函数

断在这个函数的三个查找引用函数的地方 寻找R2 dex.035

static main(void)
{
  auto fp, begin, end, dexbyte;
  fp = fopen("/Users/tasfa/Downloads/dump.dex", "wb");
  begin = 0xA0F34000;
  end = r0 + 0xFFFF0000;
  for ( dexbyte = begin; dexbyte < end; dexbyte ++ )
      fputc(Byte(dexbyte), fp);
}
原文  http://www.tasfa.cn/index.php/2018/07/16/jiagu_bangbang/
正文到此结束
Loading...