2013-08-31 1 views
1

Как я могу изменить изображение с C# в качестве шестнадцатеричных кодов http://prntscr.com/1oiw50Изменить шестнадцатеричный код в C# ехе

byte[] byt = File.ReadAllBytes("D:\\\\a.exe"); 
string hex = new SoapHexBinary(byt).ToString().Replace("504B0304", "424C0304"); 
File.WriteAllBytes("D:\\\\b.exe", new SoapHexBinary(hex).Value); 

Exe не работает таким образом, но я стараюсь.

+2

Итерации на 'byt', найдите 4 последовательных байта' 50' '4B'' 03'' 04' и замените их на нужное значение (BTW: не пытайтесь преобразовать произвольный массив байтов в строку). – I4V

+0

Тип String to Byte, тип CONVERT знает, как преобразовать байт снова после изменения. Можно ли дать правильный пример работы bi. –

+0

Я не понимаю, что вы говорите. Если вы спросите, как сделать замену в байтовом массиве, нет, я слишком ленив, чтобы написать пример кода. – I4V

ответ

0
byte[] byt = File.ReadAllBytes("D:\\a.exe"); 
    for (int i = 0; i <= byt.Length - 1; i++) 
    { 
     if (byt[i] == 80) 
     { 
      if (byt[i + 1] == 75) 
      { 
       if (byt[i + 2] == 3) 
       { 
        if (byt[i + 3] == 4) 
        { 
         byt[i] = 66; 
         byt[i + 1] = 76; 
         byt[i + 2] = 3; 
         byt[i + 3] = 4; 
        } 
       } 


      } 
     } 
    } 
    File.WriteAllBytes("D:\\b.exe", byt); 

У вас есть ошибка в этом коде. Я обратился в десятичные шестнадцатеричные коды, соответственно изменив их.

+0

'i + 3' может быть больше, чем' byt.Length - 1'. Проверьте наличие переполнений. Я думаю, это должно быть 'i I4V

+0

Мне не нужно было выбрать его +3 процента. Exe, но также позволяет по какой-то причине. Интересно, где я ошибаюсь. Если вы хотите привести пример Exe. –

 Смежные вопросы

  • Нет связанных вопросов^_^