Сейчас на форуме: cppasm, asfa, vsv1 (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Замена иконки
Посл.ответ Сообщение

Ранг: 18.3 (новичок), 6thx
Активность: 0.030.02
Статус: Участник

Создано: 17 декабря 2015 07:28
· Личное сообщение · #1

Здравствуйте! Понадобилось сменить иконку в EXE, в котором секция с ресурсами не последняя. Создал новую секцию, поправил Resource Directory RVA и Resource Directory Size. Добавил новые иконки. Иконка для EXE в проводнике поменялась. А вот возле названия окна осталась старая. Хотя у меня уже ее нету в новых ресурсах. Заполнил нулями участок данных старой секции ресурсов. После чего иконка возле названия окна изменилась на дефолтную. Т.е. получается, что LoadIcon где-то находит ссылку на старые ресурсы. Подскажите пожалуйста, где я забыл перебить оффсет на новые ресурсы.



Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

Создано: 17 декабря 2015 10:06
· Личное сообщение · #2

Может вся проблема в том, что секция содержит не все ресурсы ? Раз она не является последней, то это наводит на мысль, что файл упакован.Думаю, что разумнее было бы распаковать файл, сделать дамп ресурсов, а потом приклеить полную секцию со всеми ресурсами в конец файла и модифицировать как угодно. Aspack, asprotect и многие другие упаковщики-протекторы забирают иконку в свою секцию, так что такая прямая правка может быть чревата.

-----
TEST YOUR MIGHT




Ранг: 18.3 (новичок), 6thx
Активность: 0.030.02
Статус: Участник

Создано: 18 декабря 2015 03:31 · Поправил: Lambda
· Личное сообщение · #3

Файл действительно раньше был упакован с помощью протектора Themida. После чего был распакован не мной.

Чтобы не гадать, я собрал максимально маленький рабочий комплект(архив 12МБ). Посмотрите пожалуйста.

http://rghost.ru/8Y8Tj2ymB

game_original.exe - файл до моих манипуляций по замене ресурсов
game_patched.exe - файл после моих манипуляций по замене ресурсов

Обратите внимание на старую секцию ресурсов в game_patched.exe. А именно ".resold". Если заполнить нулями, то иконка возле названия окна сменится на дефолтную. Хотя "Resource Directory RVA" уже указывает на новую секцию ресурсов.

----------------

Осмотрел более детально. Видимо это все из-за "анпака".

На точке входа код, который восстанавливает первых 0x1000 байт из резервной области. А там я не фиксил Resource Directory RVA.

Code:
  1. PUSHAD
  2. MOV EBP, game_pat.019115F8
  3. MOV EDI, game_pat.00400000
  4. PUSH EBP
  5. PUSH 4
  6. PUSH 1000
  7. PUSH EDI
  8. CALL DWORD PTR DS:[<&kernel32.VirtualProtect>]
  9. MOV ECX, 1000
  10. MOV ESI, game_pat.01910000
  11. REP MOVS BYTE PTR ES:[EDI], BYTE PTR DS:[ESI]
  12. POPAD
  13. MOV EBP, F5813014
  14. JMP game_pat.010FACDF





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 18 декабря 2015 10:29
· Личное сообщение · #4

--> Глянь, так или нет? <--
Я иконку засунул первую попавшуюся

-----
aLL rIGHTS rEVERSED!



 eXeL@B —› Вопросы новичков —› Замена иконки
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати