Küsimus:
Kas kasutada VMM / hüpervisorit külalise OS-i täitmise jälgimiseks?
KeBugCheck
2014-03-21 21:34:12 UTC
view on stackexchange narkive permalink

Soovin seadistada virtuaalmasina monitori, kasutades Microsofti Hyper-V, VMware vSphere / ESX, Xen või mõnda muud alternatiivset hüpervisori lahendust, mis on võimeline jälgima külalise OS-i (VMM-i VM) käivitamist .

Eelkõige tahaksin, et saaksin vaadata külalise OS-i juhiseid enne, kui neid töötab virtuaalne protsessor. Lisaks tahaksin ka, et saaksin seadistada monitorid mõnele külalis-OS-i protsessori registrile, nii et kui neid muudetakse (nt kirjutades MOV-käskudega), peatatakse külalise olek kirjutamise kohas (ja rip / eip osutab sellele juhisele).

Olen otsinud VMM-i lahendust, mis paljastaks viisi, kuidas oma eesmärke täita, kuid ma ei leidnud midagi.

Kas keegi teab, mis on parim viis sellisele asjale läheneda? Kas hüpervisori kohta on soovitusi, mida peaksin kasutama? (Ma arvan, et Xeni oleks ilmselt kõige lihtsam muuta ja siluda, kuna see on avatud lähtekoodiga)

Suur tänu.

Tervist,


MUUDA: proovin ennast paremini selgitada. Proovin siluda tuumarežiimis (x86-64) töötavat koodi. Praegu kasutan WinDbgi abil ring0-koodi silumiseks virtuaalmasinas (VMware).

Kui saaksin, oleksin rohkem kui õnnelik, kui määraksin mälupesale riistvaralise murdepunkti (ba) ja näeksin, mis sinna loeb / kirjutab. Probleem on selles, et ring0-s töötav kood keelab minu riistvara katkestuspunktid. Põhimõtteliselt salvestab see kood dr7 registri sisu välja, kustutab selle, pääseb juurde mällu, mida ma vaatan (mällu, mille riistvara katkestuspunkti seadsin) ja lõpuks taastab dr7 registri pärast juurdepääsu. Seega ei tabata minu riistvara murdepunkti kunagi. See tähendab, et ma ei saa kunagi aru, kust mäluga manipuleeriti. Piisab sellest, kui öelda, et tarkvara murdepunktid pole vastuvõetav alternatiiv. Lisaks olen proovinud ka dr7-s üldtuvastusbitiga ringi käia ja installinud oma lõksuhalduri, et aru saada, kas keegi kruvib minu riistvaraliste murdepunktidega. Kuid see kood on üsna tark ja saab selle katsega kenasti hakkama (re: taastab vana konksu enne silumisregistrite juurde pääsemist).

Loodan, et näete nüüd minu mured. Selle ring0-ga töötava koodi käsitlemiseks pean töötama madalamal tasemel kui ring0. Ainus viis selleks on hüpervisor.

Tahaksin jälgida nt dr7 registri sisu ja vaadata, mis sellele juurde pääseb (loeb / kirjutab). Kui leian rikkekoodi RIP-i, saan sellest läbi astuda ja mõista rohkem, mida see teeb.

Mis on teie eesmärk? Põhjus, miks ükski VMM seda ei paljasta, on see, et riistvaratoega virtualiseerimisega inimestel pole teie küsitud funktsiooni. Midagi Qemu taolist täieliku emuleerimise režiimis võib siiski töötada. Samuti kontrollige, kas CXPInspectori paberi kirjeldatud meetod pole teie soovitud.
Redigeerisin oma postitust eesmärgi kajastamiseks. Kindlasti uurin praegu Qemut. Vaatan seda paberit siiski. Aitäh!
üks vastus:
Jonathon Reinhart
2014-03-26 11:11:32 UTC
view on stackexchange narkive permalink

VMware paljastab GDB pistiku spetsiaalselt selleks otstarbeks. Selle tõmbe abil saab GDB (või mis tahes GDB esiotsa) ühendada külalise operatsioonisüsteemiga manipuleerimiseks, justkui see oleks protsess.

Tänan info eest. Lõpuks jõudsin oma eesmärgi saavutamiseks VirtualBoxi sisseehitatud siluriga. Kuid alati on hea teada, et ka VMWare toetab neid asju!


See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...