замена иконки в ехе файле
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
замена иконки в ехе файле - 2010-02-23 16:39:47.380000
|
|
|
ZnakVoprosa
Сообщений: 37
Оценки: 0
Присоединился: 2010-01-31 19:36:50.236666
|
Автор: CAT или на форуме ZnakVoprosa Прога для замены ехе-шникам иконок она заменяет все ехе сделанные делфи но не все простые ехе исли кто поможет то спасибо и еще она некоторые иконки с ехе вытягивает в плохом качестве и поетому не всегда (скорее всего никогда) не заменяет unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,shellapi, ExtCtrls, ComCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Label1: TLabel; Edit1: TEdit; Edit2: TEdit; Label2: TLabel; RadioButton1: TRadioButton; RadioButton2: TRadioButton; OpenDialog1: TOpenDialog; Label3: TLabel; Label4: TLabel; Image1: TImage; Image2: TImage; Edit3: TEdit; Label5: TLabel; procedure saveico(s:string); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; f1:tfilestream; //поток для ехе f2:tfilestream; //поток для новой иконки f3:tfilestream; //поток для старой иконки i:integer; ind:integer; //индекс иконки в ехе size:cardinal; //размер ехе в байтах a:byte; //ну ето просто байт :) k:integer; //для подщета байт j:integer; first:array [0..511] of byte; //масив байт для поиска index:integer; startin:integer; koef:integer; //коефициент implementation uses Unit2; {$R *.dfm} procedure tform1.saveico(s:string); //заберём иконку у ехе-шника var large:hicon; smal:hicon; icon:ticon; begin shellapi.ExtractIconEx(pchar(s),ind,large,smal,1); icon:=ticon.Create; icon.Handle:=large; icon.SaveToFile('OldIcon.ico'); //сохраним иконку как файл f3:=tfilestream.Create('OldIcon.ico',fmopenreadwrite); f3.Seek(126,sofrombeginning); for i:=0 to 511 do begin f3.Read(first,sizeof(byte)); //запишем иконку в мосив end; // от 126 до 511 потомучто байты f3.Destroy; //от 0 до 125 и от 511 до конца(766) end; //у всех иконок почти одинаковы procedure TForm1.Button1Click(Sender: TObject); begin koef:=strtoint(edit3.Text); //коефицыент схожости saveico(edit1.Text); f1:=tfilestream.Create(edit1.Text,fmopenreadwrite);//откроем ехе size:=getfilesize(f1.Handle,nil); //узнаем его размер if radiobutton1.Checked=true then //ето надо для того чтобы знать откудо начинать startin:=size-round(size/8); //с последней 8-й части if radiobutton2.Checked=true then startin:=0; //с нуля f1.Seek(startin,sofrombeginning); //ну и отматываем куда надо f2:=tfilestream.Create(edit2.Text,fmopenreadwrite); //открываем иконку которую f2.Seek(0,sofrombeginning); //надо вставить в ехе k:=0; i:=startin; while i< size-511 do begin //начало цыкла f1.Read(a,sizeof(a)); label1.Caption:='поиск иконки в exe файле '+inttostr(round(i/(size-511)*100))+'%'; application.ProcessMessages; if a=first[0] then begin //если байт равен первому значению масива for j:=1 to 511 do begin //тогда проверить не равен ли следуюший байт f1.Read(a,sizeof(a)); // второму значению масива и т.д if a=first[j] then k:=k+1; //для подщёта скоко байт подошло end; f1.Seek(i,sofrombeginning); end; if k>=round((511/100)*koef) then begin //если данное количество похожих байт index:=i-126-1; // удолитворяет запрсу то нашли чо искали i:=size; end else k:=0; i:=i+1; end; if index>0 then begin //ну а если чото нашло то новой f1.Seek(index,sofrombeginning); //надо старую иконку заменить f2.Seek(0,sofrombeginning); for i:=0 to 765 do begin f2.Read(a,sizeof(a)); f1.Write(a,sizeof(a)); label1.Caption:='Замена иконки'; application.ProcessMessages; end; end; if index<>0 then begin label1.Caption:='Иконка заменена (Hacked By CAT) :) '; end; if index=0 then label1.Caption:='Не нашол иконку'; f1.Destroy; f2.Destroy; end; procedure TForm1.Button2Click(Sender: TObject); var l,s:hicon; ic:ticon; begin form2.ShowModal; //открывается модальная форма для указания индекса иконки которую надо искать ind:=strtoint(form2.edit3.text); //тут открывается ехе if opendialog1.Execute=true then begin edit1.Text:=opendialog1.FileName; shellapi.ExtractIconEx(pchar(opendialog1.FileName),ind,l,s,1); if l=0 then showmessage('Иконки с таким индексом не сушествует'); ic:=ticon.create(); ic.Handle:=l; image1.Picture.Icon:=ic; end; end; procedure TForm1.Button3Click(Sender: TObject); var ic:ticon; begin if opendialog1.Execute=true then //тут открывается новая иконка begin edit2.Text:=opendialog1.FileName; ic:=ticon.create(); ic.LoadFromFile(opendialog1.FileName); image2.Picture.Icon:=ic; end; end; end. ну надеюсь как работает понятно. Если не понятно то объясню А если чо то могу дать исходник :)
|
|
|
RE: замена иконки в ехе файле - 2010-02-23 16:43:39.260000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Лучше бы ты пользовался тэгами code при оформлении сообщений. P.S. какая практическая польза? Научился с ресурсами работать?
|
|
|
RE: замена иконки в ехе файле - 2010-02-24 15:29:44.240000
|
|
|
VAN32
Сообщений: 20
Оценки: 0
Присоединился: 2009-11-06 20:37:37.856666
|
Выложи исходник
|
|
|
RE: замена иконки в ехе файле - 2010-02-24 15:39:06.933333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
ТС выложил исходник в первом сообщении.
|
|
|
RE: замена иконки в ехе файле - 2010-02-24 16:26:24.253333
|
|
|
ZnakVoprosa
Сообщений: 37
Оценки: 0
Присоединился: 2010-01-31 19:36:50.236666
|
вот ссылка на исходник http://narod.ru/disk/18208607000/ish.rar.html
|
|
|
RE: замена иконки в ехе файле - 2010-02-28 01:28:48.410000
|
|
|
MyPaBeuHuk
Сообщений: 3
Оценки: 0
Присоединился: 2010-02-28 00:06:50.913333
|
юзани этот юнит. залезешь внутрь, сам все поймешь. http://slil.ru/28717652 (rar 1.4 кб)
|
|
|
RE: замена иконки в ехе файле - 2010-03-01 16:35:16.480000
|
|
|
ZnakVoprosa
Сообщений: 37
Оценки: 0
Присоединился: 2010-01-31 19:36:50.236666
|
quote:
ORIGINAL: MyPaBeuHuk юзани этот юнит. залезешь внутрь, сам все поймешь. http://slil.ru/28717652 (rar 1.4 кб) а ето твой код? и чо сложно написать коментарии, а то в чужом коде долго разбиратся
|
|
|
|
|