bawię się w dodawanie modułów do xip, które pochodzą z imgfs, metoda wygląda mniej więcej tak.
Ustawiamy mreloc adresy, e32 jako virtual base jakiś nieobłożony, o32 jako jakiś z dll address (jest jeszcze inna metoda alokacji tego, ale na razie dla mnie mglista).
Teraz idziemy do imageinfo.txt i zamieniamy o32_flags z XX0020XX na XX0000XX, to samo musimy poprawić hex editem w imageinfo.bin
Poprawiamy P+, V+ itd.
- dajemy przed e32_vbase V=
- dajemy przed każdym dataptr P+
- jeśli o32_flags to 40000040 lub 60000020 dajemy w realaddr V+XXXXXXXX, wartość tego musi być równa o32_rva
- jeśli o32_flags to C0000040 dajemy w realaddr D= to co wpisaliśmy w o32 realaddr w mreloc (trochę mniej ciekawie jest przy paru regionach z tymi flagami, ale o tym kiedy indziej).
czas zrobić module.txt
Module name: nazwa_modułu
dwFileAttributes: 00000007
ftTime: 01C9EC398D2DE5FA (jakiś losowy ?)
nFileSize: (rozmiar wszystkich SXXX + imageinfo.bin w hex)
lpszFileName: P+XXXXXXX dajemy dowolne adresy, xipport je poprawi.
ulE32Offset: P+XXXXXXX
ulO32Offset: P+XXXXXXX
teraz relloc P, sprawdzamy mapy, jeśli wszystko jest ok to składamy i sprawdzamy czy wszystko działa.