Tento příspěvek naposledy upravovala Summer dne 14. 10. 2025 v 10:59
Verze virtuální kamery, kterou autor dříve hacknul, zveřejnila video o Bilibili
Předchozí verze, kterou jsem rozlouskl, byla také rozbitá Propojit:Přihlášení k hypertextovému odkazu je viditelné. Nedávno mě klient požádal, abych rozluštil další verzi virtuální kamery od stejného autora a jednoduše ji studoval Nejprve zkontrolujte granát, Bangbang free reinforcement, relativně jednoduché, jen jednoduchá detekce Fridy, výše uvedený odkaz provedl velmi podrobnou analýzu výztuže a detekce verze bez Bangbangu, s využitím různých nástrojů, jako je EBPF Nejprve se zapojte s Fridou, jsou známky pádu, může to být, že krok je vnucen příliš brzy, nebo je adresa nepřístupná, když je hák připraven, opravením kódu hooku skriptu na Fridu
Obecně byla doba vstřikování trochu zpožděná, což vyřešilo problém havárií injekcí Hook Proces jeho aktivace získá data vrácená aktivací a musí požádat server, aby ověřil, že obdržel časovou značku aktivace
Uživatel pak získá čas výpočtem rozdílu času. Tato virtuální kamera také žádá o root oprávnění, jinak nedochází k komunikaci mezi verzemi napříč procesy, Celkem má tento fotoaparát spuštěné tři procesy Jedním z nich je hlavní proces aplikace fotoaparátu, což je komunikace mezi Java a C++ vrstvou Druhým je, že hlavní proces spustí binární spustitelný vstupní parametr vcmplay na příkazové řádku přes java vrstvu, aby zahájil druhý proces, který je hlavně zodpovědný za komunikaci mezi hlavním procesem kamery vcmpaly a libvc.so procesem, který se vkládá do kamerové služby systému, a hlavním způsobem komunikace je ibinder. Třetí je SO soubor camera cameraserveru vložený do systémové služby. Pokud aplikace nemůže získat root oprávnění nebo dojde k síťovému problému, proces se nespustí
Tato kamera potřebuje aktivační kód k aktivaci a použití, a analýzou Java vrstvy jsou všechna její rozhraní propojena Aktivace vyžaduje požadavek serveru na získání ověřovacích informací
Data, která získáte, jsou všechna zašifrovaná Analýzou spustitelného binárního souboru VCMPLAY můžeme zjistit, že požadovaná data jsou šifrována RSA, klíč je nalezen přes nástroj EBPF stackplz a šifrovací klíč má 128 bitů Ještě jedno slovo Tato aplikace je velmi mazaná, přidal do vcmplay příponu so, což lidi nutí myslet si, že jde o SO soubor a že je potřeba ho načíst do paměti Javy, ale ve skutečnosti je to jiný proces. Připojil jsem camera service cameraserver libvc.so zjistil jsem, že Frida spadla hned poté, co spadla Attach camera service. Nevím, jestli byla detekována, analyzoval jsem ji dlouho a omylem jsem zjistil, že VCMPLAY jednou zemřel a podařilo se mu hookovat. Předpokládá se, že to mohl být proces VCMPLAY, který proces cameraserve detekoval. Použil jsem ida k ladění procesu VCMpay a zjistil jsem, že stále má anti-ladění, prohledal tracepid v proc/self/status, abych zjistil, jestli je laditel, a co bylo ještě děsivější, zjistil, že anti-ladění nebylo pádem programu, ale skutečně smazal důležité soubory v systému Android přes root oprávnění, a pak se telefon restartoval do stavu dvojitého vymazání, systém musel být inicializován, aby se dostal do systému, a všechno v telefonu bylo pryč. Napsal jsem kernel hook modul KPM přes kernelpatch a obešel ladění Po několika bezesných nocích zde byla obecná logika vyřešena a odhaduje se, že nebude snadné ji rozluštit. Pokračování bude pokračovat později......
|