Jump to content
BulForum.com

Hex editing


THE STORM

Recommended Posts

Здравейте,

 

Тука се опитвам да редактирам една програма с WinHex. В случая искам да променя един Unicode текст на друг. Проблема е, че новия текст, който искам да въведа е по голям от този който е дефиниран там и нямам идея как да направя това без да направя програмата неизползваема.

Link to comment
Share on other sites

Здравейте,

 

Тука се опитвам да редактирам една програма с WinHex. В случая искам да променя един Unicode текст на друг. Проблема е, че новия текст, който искам да въведа е по голям от този който е дефиниран там и нямам идея как да направя това без да направя програмата неизползваема.

Всичко зависи от това как е писана програмата, все пак според мен едва ли би трябвало да имаш проблем стига да не прекаляваш много, щото не се знае колко памет се заделя. Има ли някаква пречка да направиш копие и да пробваш с него?

Link to comment
Share on other sites

Всичко зависи от това как е писана програмата, все пак според мен едва ли би трябвало да имаш проблем стига да не прекаляваш много, щото не се знае колко памет се заделя. Има ли някаква пречка да направиш копие и да пробваш с него?

Искам да добавя 4 допълнителни символа. Направих копие пробвах, но след като стартирах пачнатата версия тя изобщо не тръгна, появява се един досовси прозорец за секунда и край, нищо не става. Програмата е с GUI и е писана на Visual Basic 6.0.

Link to comment
Share on other sites

Visual Basic е малко кофти вариант, защото при него програмистът често оставя на интерпретатора (и после компилатора) да се погрижи с паметта, а определено VB няма да задели повече от колкото му трябва. Може би има надежда, ако пробваш с дисасемблер, ама тогава не се знае колко време ще загубиш и дали изобщо ще успееш да направиш това, което ти трябва.

Link to comment
Share on other sites

Така от това искам да стане това. Но след като сейфам програмата не тръгва. Иначе ако няма достатъчно заделена памет немога ли аз да заделя допълнително?

Що ми се струва, че трябва да вмъкнеш текста, а не да го презаписваш отгоре. Иначе памет можеш да заделиш, но се искат доста добри познания по асемблер за целта.

Link to comment
Share on other sites

Не знам дали не греша, щото много не ги разбирам тези работи :), но имам една програма Resource Hacker, с която съм променял текста в много програми (имам предвид превод на български) и можеш да се бъзикаш както си искаш без да се развали нещо. Ако искаш пробвай. Ето линк - цък (454 кб). Намираш къде е текста, преправяш го, цъкаш Compile Script, File->Save и готово.

Link to comment
Share on other sites

Що ми се струва, че трябва да вмъкнеш текста, а не да го презаписваш отгоре. Иначе памет можеш да заделиш, но се искат доста добри познания по асемблер за целта.

Ако ми кажеш как да го вмъкна ще си велик. :)

 

Не знам дали не греша, щото много не ги разбирам тези работи :) , но имам една програма Resource Hacker, с която съм променял текста в много програми (имам предвид превод на български) и можеш да се бъзикаш както си искаш без да се развали нещо. Ако искаш пробвай. Ето линк - цък (454 кб). Намираш къде е текста, преправяш го, цъкаш Compile Script, File->Save и готово.

Аз не искам да превеждам програмата. Това, което се опитвам да променя няма нищо общо с външния вид. Иначе пробвах програмата, наистина е добра за превод. :)

Link to comment
Share on other sites

Ако ми кажеш как да го вмъкна ще си велик. :)

Не съм ползвал твоя hex редактор, но на моя (GHex) в менюто редактиране си има режим на вмъкване.

Link to comment
Share on other sites

Не съм ползвал твоя hex редактор, но на моя (GHex) в менюто редактиране си има режим на вмъкване.

В този дето ползвам не намерих подобно нещо, но намерих функция find and replace та пробвах с нея, файла се оголеми с 26 байта, но не поиска да запали, даже и икона нямаше.

Link to comment
Share on other sites

Не ми е ясно, вие наясно ли сте все пак какво представлява в общи линии едно .exe ? :blink:

Някои от вас може и да се сещат, че преди имаше едни програми от тип .COM, които са много по-елементарни от едно .EXE, даже по-елементарни не могат да бъдат като формат, та дори и те не бяха много лесни за подобна интервенция.

Link to comment
Share on other sites

глей ся, не ти е много правилен подхода, в едно exe са много важни началните адреси на стринговете (и не само на тях де)

в повечето случаи, на функцията се подава началния адрес (указател към) стринга и тя работи от там нататък, вече зависи от езика на който е писана програмата - може в началото на стринга да има size, или пък в края му да има символ за край на стринг (обикновенно 00h)

 

в твоя случай, стринга ти почва на адрес 5618h, а пък ти се опитваш да допишеш нещо преди него - ами няма да стане

 

така като гледам, между стринговете където имаш едни нули, има едни числа които приличат на size - примерно пред стринга "on" имаш числото 4 (заради unicode, по 2 bytes на символ), само това дето преди първия стринг няма size не ми се вързва нещо, но подозирам че си го презаписал докато си експериментирал

 

може и да може да се направи нещо в твоя случай, трябва да я пуснеш програмата на IDA и да изчакаш търпеливо да се дизасемблира, после да потърсиш този стринг и да се надяваме че има crossref към него, така ще намериш от къде се access-ва, след това вече, може да потърсиш в exe-то някое празно местенце където да разположиш новия стринг и да смениш там където е адреса на стария, да сложиш адреса на новия, така стария ще си остане на мястото непроменен, но ще се ползва новия

 

JDFU, ако ползваш "вмъкване", началните адреси на всичко след мястото където си вмъкнал се разместват, което при повечето exe-та означава shitstorm

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...