@@ -581,4 +581,46 @@ bool ContainsAny(const std::string& line,
581581 }
582582 }
583583 return false ;
584- }
584+ }
585+
586+ void Model::Extract微信() {
587+ const std::string outputDir = " Datas/微信" ;
588+ fs::create_directories (outputDir);
589+
590+ std::cout << " 📱 检查设备连接状态..." << std::endl;
591+ if (system (" adb get-state > nul 2>&1" ) != 0 ) {
592+ std::cerr << " ❌ 设备未连接。" << std::endl;
593+ return ;
594+ }
595+
596+ std::cout << " 📤 正在尝试提取 /sdcard 路径..." << std::endl;
597+ std::string pull_sdcard =
598+ " adb pull /sdcard/Android/data/com.tencent.mm/ \" " + outputDir +
599+ " /sdcard/\" " ;
600+ int result_sdcard = system (pull_sdcard.c_str ());
601+
602+ if (result_sdcard == 0 ) {
603+ std::cout << " ✅ 成功提取 /sdcard 目录。" << std::endl;
604+ return ;
605+ }
606+
607+ std::cout << " ⚠️ /sdcard 不可访问,尝试 /data/data 路径(需要 root)..."
608+ << std::endl;
609+ std::string pull_data =
610+ " adb shell su -c 'cp -r /data/data/com.tencent.mm /sdcard/wechat_tmp "
611+ " && chmod -R 777 /sdcard/wechat_tmp'" ;
612+ int result_root = system (pull_data.c_str ());
613+
614+ if (result_root != 0 ) {
615+ std::cerr << " ❌ 无法访问 /data/data。需要 root 权限。" << std::endl;
616+ return ;
617+ }
618+
619+ std::string pull_tmp =
620+ " adb pull /sdcard/wechat_tmp \" " + outputDir + " /data_data/\" " ;
621+ if (system (pull_tmp.c_str ()) == 0 ) {
622+ std::cout << " ✅ 成功提取 /data/data 目录。" << std::endl;
623+ } else {
624+ std::cerr << " ❌ 复制 /data/data 失败。" << std::endl;
625+ }
626+ }
0 commit comments