davinci1010 / pinduoduo_backdoor

拼多多apk内嵌提权代码,及动态下发dex分析

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

一点VMP脱壳技巧分享

vangogh0101 opened this issue · comments

看到有大佬问VMP怎么脱,分析下来PDD的恶意代码是有两套VMP进行保护(manwe、nvwa),有的是manwe保护,有的是nvwa保护,都是单个保护,不会保护两次。VMP文件以.bin结尾,PDD安装之后,会释放到files/.components里,文件在vmp_src中,然后再拷到files/bot/目录下面。有的是自带直接释放,有的是从远端拉取。manwe的解释器在com.xunmeng.manwe.*里面,nvwa在libnvwavm-lib.so里。

manwe逆向下来,是JVM on Java设计的一套VMP,constant pool设计与原始JVM有一些不同,同时多个class被压缩在一个bin文件中,opcode基本一一对应。nvwa为JVM转native的一套VMP,Dalvik opcode对应到自设计的一套native vmp上。VMP代码通过PluginBridge类,与主App中的interface进行交互。

脱壳的话,manvwa、nvwa都是把opcode一一重写回去就好了,注意跳转指令之类的offset需要调整,constant pool里面一些Ref需要调整。utf16string编码是颠倒的,对调回去就可以恢复出字符串。class都转化成了string引用

除了原po分析的AliveBaseAbility,各位大佬也可以关注下bot/alive_security_biz_plugin/mw1.bin(AliveStrategyBizComp),里面的东西更劲爆。

牛逼

关于脱壳的问题, 相信很多非安全岗位的小伙伴都不太熟悉。请问是否可以说的更详细一些,或者直接给出脱壳后的dex呢? @vangogh0101 @davinci1010

md5sum

569d110753d56aec16b81f8394c5b2d8 /data/data/com.xunmeng.pinduoduo/files/.components/com.xunmeng.pinduoduo.AliveBaseAbility/vmp_src/mw1.bin
569d110753d56aec16b81f8394c5b2d8 /data/data/com.xunmeng.pinduoduo/files/bot/alive_base_ability_plugin/6.49.7/mw1.bin
353412bf94ff41261ccbe809c9eff98f /data/data/com.xunmeng.pinduoduo/files/bot/base_secdt_comp_plugin/6.45.0/nw0.bin

what does bot/alive_security_biz_plugin/mw1.bin(AliveStrategyBizComp) file hash ?

大神能不能手把手小白们,图文教一下怎么manwe、nvwa保护脱壳成dex文件?

@vangogh0101 我这非安全相关的。有点懵逼。大佬能给个脱壳之后的dex嘛??302748574@qq.com

大神能不能手把手小白们,图文教一下怎么manwe、nvwa保护脱壳成dex文件?

你当这是写helloworld呢

虽然我也不会

大哥,能分享一下脱壳后的dex吗

大佬能否分享一下bot/alive_security_biz_plugin/mw1.bin(AliveStrategyBizComp)样本?

来了来了,大神创建了个脱壳机仓库。https://github.com/davinci1012/pinduoduo_backdoor_unpacker

大哥,能分享一下脱壳后的dex吗

https://github.com/poorjobless/pinduoduo_backdoor_code

@vangogh0101 我这非安全相关的。有点懵逼。大佬能给个脱壳之后的dex嘛??302748574@qq.com

https://github.com/davinci1012/pinduoduo_backdoor_unpacker

manwe 和 nvwa 的脱壳程序代码都有。
manwe 用 java,nvwa用的python

python运行环境,会有各种问题,自行动手解决
说不上掌握多深,过程权当学习