Ei mitään käsitystä onko tuo termi oikein suomeksi, mutta englanniksi on kuitenkin "manual mapping". Katso linkki: http://vmpsoft.com/support/user-manual/working-with-vmprotect/main-window/dll-box-tab/
Kiinnostaa miten tämä tapahtuu teoriassa.
Eli päätarkoitushan tällä on yhdistää DLL tiedostot yhteen *.exe tiedostoon - ja ladata/injektoida ne omaan muistitilaan. Eli sama kuin staattinen linkitys, mutta jälkikäteen jolloin jäljellä on vain yksi tiedosto.
Arvaisin että tiedosto muutetaan tavutaulukoksi("byte array"), ja ladataan se omaan muistitilaan, minkä pystynkin tekemään - mutta miten ne DLL tiedostot pystyy "mappaamaan" siihen *.exeen?
Vai pitääkö ne *.DLL tiedostot ladata esim. resursseista, ja vasta sen jälkeen ladata se exe? ...
TL;DR http://vmpsoft.com/support/user-manual/working-with-vmprotect/main-window/dll-box-tab/ - miten?
Ja tosiaan, ei oikein tunnu olevan suomenkielinen termistö hallussa tän C++:n kanssa..
Ei onnistu helposti, jos ohjelma on linkattu DLL:ää vasten (eli .exen import-taulusta löytyy viittauksia DLL:n funktioihin), koska tällöin Windowsin lataajan pitää löytää kyseinen DLL levyltä ohjelman käynnistyksessä. VMProtect tekee tämän käyttämällä nk. "stubia", joka lataa .exen ja .dll-tiedostot muistiin, mikä vaatii mm. sektionien kirjoittamisen sopiviin muistiosotteisiin, relokaatioiden asettamisen sekä import- ja export-taulujen muodostamisen. Tämä on melko vaativa temppu, koska WinAPI ei tarjoa valmiita funktioita näihin tarkoituksiin (lukuunottamatta dokumentoimattomia funktioita, jotka ovat erilaiset Windowsin eri versioiden välillä).
Helpoimmalla pääset kun tallennat DLL-tiedostot ohjelmasi resursseihin, kirjoitat ne levylle ja käytät ajonaikaista linkkausta, eli LoadLibrary
- ja GetProcAddress
-funktioita. DLL:t voit kirjoittaa väliaikaishakemistoon FILE_FLAG_DELETE_ON_CLOSE
-flagilla, jolloin ne poistetaan automaattisesti, kun ohjelman suoritus päättyy.
Jos et halua käyttää ajonaikaista linkkausta, niin joudut käyttämään jonkinlaista stub-ratkaisua. Voit esimerkiksi tehdä ohjelman, jonka resursseihin tallennetaan suoritettava .exe-tiedosto sekä .dll-tiedostot. Tämän ohjelman tehtävä on ainoastaan kirjoittaa tiedostot levylle ja .exen käynnistäminen. Jos et halua kirjoittaa tiedostoja levylle, niin menee liian vaikeaksi ja kannattaa mieluummin unohtaa koko juttu.
Aihe on jo aika vanha, joten et voi enää vastata siihen.