最近碰到个有趣的壳子,是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