XOOX. Cilvēks. ([info]xoox) rakstīja [info]koderi kopienā,
@ 2006-05-29 12:09:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Kādam no cienītajiem kolēģiem ir idejas, kā nomainīt string jeb virkni jau nokompilētā EXE failā? Virkne ir garāka nekā jau esošā. EXE failā virkni atrast var, mēģināju nomainīt uz garāko, bet programma pēc tam vairs nedarbojas. Jāmeklē checksumma? Bet kur?
Nu jā, un virkne nav kā daļa no resursiem (resource string), tā parādās tikai kā pliks teksts EXE, līdz ar to API funkcijas UpdateResource u.c. neder.
Googles tante ātru risinājumu nepiedāvā, bet mēģināt iebraukt PE formāta jaukumos par maz laika.


(Lasīt komentārus) - (Ierakstīt jaunu komentāru)


[info]neons
2006-05-29 19:20 (saite)
Nav jāmeklē nekāda "checksuma". Lieta tāda, ka Tu nevari ierakstīt garāku virkni, ja tam nav atstāta vieta, jo tūlīt aiz tās virknes seko nākamie dati vai kods, līdz ar to, ierakstot garāku virkni, tu notīri nākamos datus, kā rezultātā programma var nefunkcionēt. Vienīgais veids, kā varētu mēģināt, būtu ierakstot to virkni (garāko) kaukur citur failā, un tad meklēt visas vietas kodā, kas referencējas uz to oriģinālo virkni, un tur nomainīt adresi. Otrs veids būtu programmas dizasemblēšana, virknes nomaiņa un tad pārveršana atpakaļ ekzešņikā ar asemblera palīdzību.

(Atbildēt uz šo) (Diskusija)


[info]ergaster
2006-05-29 19:59 (saite)
(disklaimeris (balstīts iepriekšējā bēdīgā virtuālās komunicēšanas pieredzē ar nepazīstamiem cilvēkiem): šis nav uzbrauciens, vienkārši atsauca atmiņā diezgan pasenu darbošanos ar pieminēto tehnoloģiju) - Pēdējais ieteikums būtu bezmaz ideāls, ja vien tas dizasembleris strādā absolūti korekti, kam es diez ko negribu ticēt. A, ja pēc tam ar pirkstu jāvelk līdz un ar roku ģenerētais asemblera kods jālabo, tad laikam paņēmiens tikpat "labs" kā visi pārējie iepriekš minētie.

Ar vārdu sakot, man šķiet, ka drīzāk šie te varētu būt noderīgāki (vismaz pēc tam labojamā ģenerējamā koda apjoms varētu būt mazāks un paskats - saprotamāks). Ja vien, protams, augšminētie verķi strādā daudz maz kvalitatīvi.

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]neons
2006-05-30 07:46 (saite)
Nav bijusi darīšana ar Windows disasembleriem, bet ar normālu DOSisku viss būtu elementāri. Mums tiktu uztaisīts viens liels .asm fails norādītajā formātā (MASM/TASM), kurā ar Search/Replace visprastākajā teksta redaktorā būtu jānomaina mūs interesējošā teksta virkne un tad ar to pašu MASM/TASM vienkārši no jauna jāuzģenerē ekzešņiks. Pieņemu, ka ar Windozes rīkiem ir līdzīgi.

Dizasemblers nevar strādāt īpaši nekorekti, vienīgā problēma varētu būt, ka viņš varētu kaukur saputrot datus ar kodu (nesaprast, kas šī baitu virkne īsti ir). Bet pamatā gudrs dizasemblers redz, ka kods kaukur vēršas pie noteiktās adreses kā pie datiem un līdz ar to attiecīgo vietu kodā pieraksta kā datus.

(Atbildēt uz šo) (Iepriekšējais)


(Lasīt komentārus) -

Neesi iežurnalējies. Iežurnalēties?