Esmu "tikpat gudrs" kā Tu šajā jautājumā, tāpēc arī atbildu no šādas pozīcijas:
1. Pamēģini nomainīt ar tikpat garu, nevis garāku. Tā Tu uzzināsi, vai tiek lietotas čeksummas. Tālākais strādās tikai tad, ja ne...
2. Man ir aizdomas, ka drīzāk vaina būs koda adresācijas nobīdē. Visu kodu kopumā vajadzētu bez problēmām bīdīt pa adresu telpu, bet ne tā atsevišķas daļas vienu attiecībā pret otru. Risinājums - teksta rindiņu ierakstīt "overwrite", nevis "insert" modē - tādējādi pārrakstot pa virsu daļai koda. Cietušo koda (ja tas patiešām viss ir kods) daļu pārvieto kaut kur citur (varbūt faila, vai koda segmenta, ja tur tāds ir, beigās) uz kurieni jāpāradresē visi tā izsaukumi (sorry, cerams, ka to nav daudz, ideāli, ja viens). Beigās, savukārt, ieliek "jmp" atpakaļ uz atlikušo daļu, ja tāda, protams, ir. Bez PE izpētes diez vai iztiksi...
Ar vārdu sakot, neapskaužu Tevi (un tik gudrs jau Tu pats arī biji, man tikai gribējās izteikties ;)) )
Otrs, drusku jēdzīgāks (bet ne vieglāks) variants - vispirms atrast atsauces uz šo tekstu kodā (ja to nav daudz) - neprasi kā (debugger is your friend) un uz beigām pārcelt teksta rindiņu, nevis kodu...
Abos gadījumos "the tricky part" ir atrast (pie tam visas) atsauces uz pārvietojamo fragmentu.
Neesmu pārliecināts, ka pastāv kāds trešais un vieglākais ceļš... :/
Pēc manām domām (tā kā Tu saki, ka maz laika), vienīgais praktiskais risinājums Tavā situācijā ir - atkratīties no šī darbiņa...
(Lasīt komentārus)
Nopūsties: