Poslao: 26 Feb 2012 13:31
|
offline
- morando

- Građanin
- Pridružio: 19 Maj 2011
- Poruke: 297
|
Bez ulazenja u detalje kako rade te "mapPhys" funkcije, mozes ovako da uradis, malo izmenis funkciju:
void memStreamPhysStore(unsigned int paddr, unsigned char* from, unsigned int size)
{
while (size) {
unsigned char *vaddr = memPhysMap(paddr);
unsigned int bytes = PHYS_CACHE_SIZE - (PHYS_CACHE_MASK & (unsigned int)vaddr);
if (bytes > size)
bytes = size;
memcpy(vaddr, from, bytes);
size -= bytes;
paddr += bytes;
}
}
i onda tamo:
unsigned int size = sizeof(fajl) / sizeof(fajl[0]);
memStreamPhysStore (addr, fajl, size);
Koje informacije, odnosno sta sadrzi tih 96 bajta?
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 26 Feb 2012 19:03
|
offline
- savan2

- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
Napisano: 26 Feb 2012 17:16
Hvala ti, pokusao sam isto tako kao sto si napravio, medjutim stavio sam samo sizeof(fajl) bez onog "kroz" i nije htelo da radi verovatnosto nisam i to dodao. Niz onaj sam bezveze stavio, niz je od 512kb i u njemu je binarni fajl koji treba da se pokrene u memoriji kada pokrenem exe koji pravim... pokusacu ponovo pa javim! Dali mozda znas kako i u kom je formatu slican binarni fajl koji je u samom exe smesten isto tako kao sto ja pokusavam da napravim, exe sam dekompilovao, medjutim taj binarni fajl je "stripovan" prilikom kompilacije samog programa ili mozda kompresovan, mada ne verujem da je kompresovan jer u hex editoru vidim delove koji mogu da se procitaju samo sto neki delovi su nerazumljivi sto mi vise lici na strip... znaci dali mogu da izbacim taj isti bin i ubacim moj bin i kako da napravim isti format? Exe nije zapakovan upx-om niti bilo kojim drugim pakerom i sve funkcije su na raspolaganju u ida, samo ne razumem zasto je binarni fajl "spakovan" i kako.
Dopuna: 26 Feb 2012 19:03
Huh, ne radi ovako! Mislim da je problem sto "trampoline" nije alocirana u smislu 512kb velicine binarnog fajla nego trampoline ustvari trazi svako prazno mesto i "filuje" memoriju po delovima gde je slobodna pa zato memcpy ne moze da radi jer alocira "odmah" ceo fajl i pokusava da ga smesti u memoriju koja se alocira "on the fly" u delovima pa samim time ovo ne funkcionise... treba nekako napraviti da streamuje iz niza kao sto to radi iz FILE*... dali postoji neka fora da cita fajl interno, da smestim fajl u exe i da ga citam sa fopen/fread? Ili mozda izmeniti:
if (bytes > size)
bytes = size;
memcpy(vaddr, from, bytes);
size -= bytes;
paddr += bytes;
}
sa necim na primer na ovaj fazon:
void memStreamPhysStore(unsigned int paddr, unsigned char *from, unsigned int size)
{
while (size) {
unsigned char *vaddr = memPhysMap(paddr);
unsigned int bytes = PHYS_CACHE_SIZE - (PHYS_CACHE_MASK & (unsigned int)vaddr);
int i = 0;
if (bytes > size)
bytes = size;
size -= bytes;
paddr += bytes;
i++;
memcpy(vaddr, from[i], size);
}
}
od prilike znam zasto ne funkcionise mada nism dovoljno dobar u c da bi to zavrsio kako mislim
|
|
|
|
|
Poslao: 26 Feb 2012 21:13
|
offline
- savan2

- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
Bravo! Radi! Upravo sam na to mislio "pokazivac" ali posto sam samouk, niti znam da objasnim niti znam da napravim sam , svaka cast! Naucim uvek nesto novo... HVALA TI PUNO! Dali znas nesto u vezi problema iz predhodnog posta u vezi bin fajla koji je u exe, patchujem jedan bootloader i sve uspesno ide, medjutim exe fajl koji treba da instalira modifikovani bootloader ima "spakovan" bin fajl koji ne kontam kako da raspakujem i spakujem drugi? Ovaj program koji sad pravim radi, ali nesto sto ima "onaj" exe nema ovaj sto sad radim, pa bi naj bolja kombinacija bila ova sa bin fajlom...
|
|
|
|
Poslao: 26 Feb 2012 21:26
|
offline
- morando

- Građanin
- Pridružio: 19 Maj 2011
- Poruke: 297
|
Nazalost, ne znam kako bih modifikovao exe fajlove, nikad me nije interesovalo "krekovanje/pačovanje", tako da ne znam kako drze podatke, da li su kompresovani i sta vec ne...
Verovatno ima alatki po internetu da se skine koje olaksavaju posao, samo treba znati prave kljucne reci za pretragu.
|
|
|
|
Poslao: 02 Okt 2012 23:04
|
offline
- savan2

- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
Napisano: 26 Feb 2012 21:33
Ok, ok, hvala opet!
Dopuna: 02 Okt 2012 23:04
Pozz ...nasao sam jedan post i jedan php koji konvertuje onaj font header u png i tek sam vidim da pozadina ide bela a font crn... poceo sam opet da se igram sa recovery pa cu pokusati da napravim neki font cim uhvatim malo vremena. Php izgleda ovako:
<?php
// by wkpark at gmail.com 2012/08/27
// read font header file like as font_10x18.h and generate 2-bit depth
$fon = file_get_contents("font_7x16.h");
$lines = explode("\n", $fon);
$f = "";
foreach ($lines as $line) {
if (preg_match("/^0x/", $line)) {
$f.= $line;
} else {
if (preg_match("/\.width\s*=\s*(\d+),/", $line, $m))
$width = $m[1];
else if (preg_match("/\.cwidth\s*=\s*(\d+),/", $line, $m))
$cwidth = $m[1];
else if (preg_match("/\.height\s*=\s*(\d+),/", $line, $m))
$height = $m[1];
}
}
$hex = explode(",", $f);
$bin = array();
foreach ($hex as $h) {
$h = trim($h);
if (isset($h[0])) {
$bin[] = hexdec($h);
}
}
function png($data, $cwidth, $width, $height) {
$w = $cwidth * 96;
$img = imagecreate($w=668, $height=16);
$bg = imagecolorallocate($img, 255, 255, 255);
$color = imagecolorallocate($img, 0, 0, 0);
$color2 = imagecolorallocate($img, 128, 128, 228);
$x = 0;
$y = 0;
foreach ($data as $bin) {
$bit = $bin & 0x80;
$dup = $bin & 0x7f;
for ($i = 0; $i < $dup; $i++) {
if ($bit)
imagesetpixel($img, $x, $y, $color);
$x++;
if ($x % $width == 0) {
$x = 0;
$y++;
}
}
}
imagepng($img, "out.png");
}
png($bin, $cwidth, $width, $height);
I dalje ne kontam kako se pravi header mada mislim da ide onako kako si rekao... preko gimpa, samo nije htelo da radi jer smo kontra postavili crno i belo...
|
|
|
|