最近碰到个有趣的壳子,是libvdog.so的免费版,感觉和之前第一代壳子有点像,特此记录下学习点滴。

随便找个样本,apktool反编译看看AndroidManifest.xml,可以看到一个application标签。利面有个自定义的VDogApplication,还有个meta-data标签。这里meta-data标签里面的就是原Application的信息,如class_name.

App启动的时候,Application中的attachBaseContext方法先调用,这里可以看看具体vdogApplication是怎么实现。这里面定义了原App的application对象,初始化自定义类加载器,获取源程序中的Application名称,通过反射生成原App的application对象。

加载原始的Application一般在onCreate()函数中,加载原始Application对象,并替换为原始Application的引用。调用baseContext并调用原始application的onCreate方法。

Dex整体加密在内存中找到dex明文就可以拿出来,目前试验过的一代壳有几种方式

  • 梆梆 + 爱加密 + 娜迦
    • DexExtractor 脱壳机
  • drizzleDumper
    • 360 一代,百度早期
  • 手工断在libdvm.so dvmDexFileOpenPartial下再配上一段脚本
    • 基本通杀一代壳,如阿里等
    • 对于一些变态的反调,这个只能练内功。。。

后记:vdog这个其实弄出来还不算整体dex,里面onCreate()是空的,还得修复。。这个需要继续深入了

看雪文章: https://bbs.pediy.com/thread-220070.htm

onCreate vs attachBaseContext:http://www.10tiao.com/html/227/201704/2650239403/1.html