Озменить код в ехе файле

Тема в разделе "PHP", создана пользователем temp888, 18 июн 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. temp888

    temp888 Создатель

    Регистр.:
    30 май 2010
    Сообщения:
    17
    Симпатии:
    0
    Нужно изменить надпись в программе ехе написаной на делфи средствами пхп.
    Надписль содержется в копоненте лабел..
     
  2. dani.

    dani. Создатель

    Регистр.:
    19 сен 2008
    Сообщения:
    32
    Симпатии:
    6
    В чем проблема? Найди смещение этой строки в exe, загрузи файл в массив ($contents = file_get_contents($filename))), пройдись циклом по байтам массива с заменой символов и записывай обратно в файл или на скачку выдавай.
     
  3. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    для чего и как часто будет это делаться? если копирайты снимать, то большинство программ хотя и написанных на дельфи, дополнительно пакуются, и там найти строку уже весьма проблематично. а если просто на раз убрать текст из лейбла, проще руками через тот же hexview это сделать.
     
  4. Kai

    Kai

    Регистр.:
    29 июн 2007
    Сообщения:
    329
    Симпатии:
    46
    http://www.phpclasses.org/package/5180-PHP-Read-and-write-files-to-edit-their-data.html
     
  5. stealtheos

    stealtheos Создатель

    Регистр.:
    28 апр 2010
    Сообщения:
    19
    Симпатии:
    1
    тут простая замена не подойдет
    нужно ознакомиться как минимум с форматов файлов PE (Portable Executable) формат для win32
    все названия хранятся в секции ресурсов и эта секция имеет смещение и контрольную сумму и если тупо заменить строку ... то будет как имнимум ошика тина Error: WtiteMem address ... и т.д.
    можно ручками поменять используя программу для редактирования ресурсов PE (.exe) файлов ... например программа PE Explorer
    короче вот тебе почва ... размышляй
     
  6. Jargal

    Jargal Писатель

    Регистр.:
    15 июн 2010
    Сообщения:
    9
    Симпатии:
    0
    хм, интересно... а зачем тебе редактировать файл?
     
  7. temp888

    temp888 Создатель

    Регистр.:
    30 май 2010
    Сообщения:
    17
    Симпатии:
    0
    Не могли бы вы привести пример этого?
     
  8. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    Открываешь блокнот (Пуск -> Выполнить -> "notepad")

    В блокноте открываешь свой экзешник (Файл -> Открыть -> Тип файлов: все, кодировка ANSI)

    Ищешь в своем экзешнике нужную строку (Правка -> Найти).

    Если нашлась - поздравляю, можно поменять. Подойдет любой БИНАРНЫЙ редактор (Far, Hiew, vim -b, Hex Editor, 010 Editor ....), только новая строка должна быть такой же по длине (забей лишние символы пробелами, строку длиннее исходной всунуть не получится).

    Еще вариант - попробовать Resource Workshop и им подобные проги. Тогда можно будет всунуть строку любой длины, но и шансов что все будет работать, учитывая глубину твоих познаний, намного меньше.
     
  9. temp888

    temp888 Создатель

    Регистр.:
    30 май 2010
    Сообщения:
    17
    Симпатии:
    0
    Первое сообщение прочитай!!
    Это нужно средствами пхп сделать!!!
     
  10. dani.

    dani. Создатель

    Регистр.:
    19 сен 2008
    Сообщения:
    32
    Симпатии:
    6
    Я ж привел. Ну вот весь кусок:
    Код:
    // читаем файл в строку
    if ($contents = file_get_contents($bild_filename))
    {	
    	// записываем в строку байты числа aff
    	for ($i = 0; $i < $aff_bytes; $i++) 
    	{
    		$contents[$aff_offset + $i] = chr($aff % 0x100);
    		$aff = floor($aff / 0x100);		
    	}
    	
    	// записываем в строку байты числа saff
    	for ($i = 0; $i < $saff_bytes; $i++) 
    	{
    		$contents[$saff_offset + $i] = chr($saff % 0x100);
    		$saff = floor($saff / 0x100);		
    	}
    	
    	// читаем из строки версию билда
    	$curr_ver = 0;
    	for ($i = $ver_bytes - 1; $i >= 0; $i--) 
    	{
    		$curr_ver += ord($contents[$ver_offset + $i]);				
    		$curr_ver *= pow(0x100, $i);				
    	}	
    	
    	
    	// если на сервере нет более новой версии, даем ошибку
    	if ($ver >= $curr_ver)
    	{
    		header('HTTP/1.0 404 Not Found');
    	}
    	else
    	{
    		// отправляем заголовки бинарного файла
    		header('Content-Type: application/octet-stream');
    		header('Content-Length: '. filesize($bild_filename));	
    		echo $contents;
    	}
    }
    
    Что ж тут непонятного...
     
Статус темы:
Закрыта.