Nasıl Yapıyorlar?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 153
- Kayıt: 14 Tem 2008 12:28
Nasıl Yapıyorlar?
mesela bır programda bakıyorum bır butona bastıgınızda exe oluşturuyor....
bu nasıl oluyor oluyorsa acıklayabılırmısınız
bu nasıl oluyor oluyorsa acıklayabılırmısınız
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: Nasıl Yapıyorlar?
bu biraz hangi programa baktiginiza bagli 
eger delphi , VC++ gibi bir programa bakiyorsaniz bunlarin nasil exe ler urettigi malum
nsis , innosetup tarzi programlara bakiyorsaniz exe dosyalari bunlarda kendileri uretiyor. hic bakmadim ama mesela innosetup delphi ile yazilmis bir uygulama ve acik kaynak kodlu. nasil exe urettigini incelemek fena olmazdi.
birde sahte exe uretenler var
eger baktigin programlar bunlarsa, bunlarda belirli bir ozellikte yazilmis kalip halindeki exelerin header bilgisiyle, icinde ki resource verileriyle oynayarak exe olusturuyormus havasi veriyor. ekran koruyucu yapan programlar , self-extracting yapan programlar vs.
bu tip birsey yapmak icin pe header ve resource bilgin iyi seviyede olmali ya da http://www.codeoffice.com adresindeki bind to exe adli kutuphaneyi kullanmalisin.
ornekler...

eger delphi , VC++ gibi bir programa bakiyorsaniz bunlarin nasil exe ler urettigi malum
nsis , innosetup tarzi programlara bakiyorsaniz exe dosyalari bunlarda kendileri uretiyor. hic bakmadim ama mesela innosetup delphi ile yazilmis bir uygulama ve acik kaynak kodlu. nasil exe urettigini incelemek fena olmazdi.
birde sahte exe uretenler var

bu tip birsey yapmak icin pe header ve resource bilgin iyi seviyede olmali ya da http://www.codeoffice.com adresindeki bind to exe adli kutuphaneyi kullanmalisin.
ornekler...
-
- Üye
- Mesajlar: 153
- Kayıt: 14 Tem 2008 12:28
Re: Nasıl Yapıyorlar?
Yok demek istedigim mesela :
idftp1.Host:='edit1.text';
idftp1.Username:='edit2.text';
idftp1.Password:='edit3.text';
idftp1.Connect;
IdFTP1.Passive:=true;
gibi yaptık adam editlere bilgiyi gircek bir buton koyacagım butonda bu kodlara ozel bir exe oluşturacak ve adam bu exe her tıkladıgında ftp upload edecek boyle bısey mumkunmu
idftp1.Host:='edit1.text';
idftp1.Username:='edit2.text';
idftp1.Password:='edit3.text';
idftp1.Connect;
IdFTP1.Passive:=true;
gibi yaptık adam editlere bilgiyi gircek bir buton koyacagım butonda bu kodlara ozel bir exe oluşturacak ve adam bu exe her tıkladıgında ftp upload edecek boyle bısey mumkunmu
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Nasıl Yapıyorlar?
Yazılanı .exe yapmada en iyi programlardan birisi de delphi değilmidir? Bundan yola çıkarak hayal edebilirsin. Delphi için bile bu kadarının yetmiyor olmasında bir sebep aramalı
.

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: Nasıl Yapıyorlar?
tamam iste senin yapmak istedigin bu kategoriye giriyor. hatta daha da basiti. bu isi yapan bir exe yap. gerekli parametrelere belirli degiskenler atar sonra da bu degiskenleri exe dosyada vatandasş-in girecegi bilgilere gore bul-degistir yaparsin olur biter.sadettinpolat yazdı:
birde sahte exe uretenler vareger baktigin programlar bunlarsa, bunlarda belirli bir ozellikte yazilmis kalip halindeki exelerin header bilgisiyle, icinde ki resource verileriyle oynayarak exe olusturuyormus havasi veriyor. ekran koruyucu yapan programlar , self-extracting yapan programlar vs.
-
- Üye
- Mesajlar: 153
- Kayıt: 14 Tem 2008 12:28
Re: Nasıl Yapıyorlar?
cok haklısınız tşkkürler peki bu .exe dosyalarının kodlarını degıstırmek ıcın delphi api v.s ihtiyacı varmı?
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: Nasıl Yapıyorlar?
spesifik herhangi birseye ihtiyaciniz yok. bu forumdan ya da internetten en temel konulardan birisi olan
dosya acma
dosyada belirli bir ifadeyi bulma
bu ifadeyi baska bir ifade ile degistirme
ve yeni dosyayi kaydetme komutlari isinizi rahatlikla gorecektir.
isinizi gorecek komutlardan bazilari...
AssignFile
Reset
Seek
BlockRead
BlockWrite
CloseFile
dosya acma
dosyada belirli bir ifadeyi bulma
bu ifadeyi baska bir ifade ile degistirme
ve yeni dosyayi kaydetme komutlari isinizi rahatlikla gorecektir.
isinizi gorecek komutlardan bazilari...
AssignFile
Reset
Seek
BlockRead
BlockWrite
CloseFile
Re: Nasıl Yapıyorlar?
server edit diyerek bir araştırma yapabilirsin.
örnek olarak bir unit yolluyorum.incele basit bir unit.
ancak iyi bir amaç için kullanacağını umuyorum çünkü ilk bakışta anladığın üzere trojan mantığı güden programlarda kullanılan bir server builder görevi görür.bir zaman yaptığım çok gelişmiş bir keylogger server edit bölümüdür.ama artık tasarlamıyorum.tam aksine a.v. yazılımlar için çalışıyorum.asker dönüşü tabii:))))
fonksiyonlar ve procedure leri karıştırarak daha farklı işler çıkarabilirsiin.esnek bir yapı.
kolay gelsin.
unit EditSvr;
interface
type
SArray = array of string;
TLoader = class(TObject)
Settings:SArray;
procedure LoadSettings;
end;
TBuilder = class(TObject)
Settings:array[0..100] of string;
procedure WriteSettings(filen:string);
end;
implementation
uses
Windows;
const
ID = '[{#}]';
function Encrypt(s:string):string;
var i:integer;
begin
for i := 1 to length(s) do
s := char(ord(s) xor 444);
result := s;
end;
function Split(const Source,Delimiter:String):SArray;
var
iCount,iPos,iLength: Integer;
sTemp: String;
aSplit:SArray;
begin
sTemp := Source;
iCount := 0;
iLength := Length(Delimiter) - 1;
repeat
iPos := Pos(Delimiter, sTemp);
if iPos = 0 then
break
else begin
Inc(iCount);
SetLength(aSplit, iCount);
aSplit[iCount - 1] := Copy(sTemp, 1, iPos - 1);
Delete(sTemp, 1, iPos + iLength);
end;
until False;
if Length(sTemp) > 0 then begin
Inc(iCount);
SetLength(aSplit, iCount);
aSplit[iCount - 1] := sTemp;
end;
Result := aSplit;
end;
///////////////////////////////////////////
///////// değerleri girmen için server güncelle; //////////
///////////////////////////////////////////
function _LoadSettings: string;
var
ResourceLocation: HRSRC;
ResourceSize: dword;
ResourceHandle: THandle;
ResourcePointer: pointer;
begin
ResourceLocation := FindResource(hInstance, 'BUBZ', RT_RCDATA);
ResourceSize := SizeofResource(hInstance, ResourceLocation);
ResourceHandle := LoadResource(hInstance, ResourceLocation);
ResourcePointer := LockResource(ResourceHandle);
if ResourcePointer <> nil then
begin
SetLength(Result, ResourceSize - 1);
CopyMemory(@Result[1], ResourcePointer, ResourceSize);
FreeResource(ResourceHandle);
end;
end;
procedure TLoader.LoadSettings;
var i:integer;
begin
Settings := Split(_LoadSettings,ID);
for i := 0 to High(Settings) do begin
if Settings <> '' then
Settings := Encrypt(Settings);
end;
end;
///////////////////////////////////////////
///////////////////////////////////////////
///////// exe ye yaz; ///////////
///////////////////////////////////////////
procedure _WriteSettings(ServerFile: string; Settings: string);
var
ResourceHandle: THandle;
pwServerFile: PWideChar;
begin
GetMem(pwServerFile, (Length(ServerFile) + 1) * 2);
try
StringToWideChar(ServerFile, pwServerFile, Length(ServerFile) * 2);
ResourceHandle := BeginUpdateResourceW(pwServerFile, False);
UpdateResourceW(ResourceHandle, MakeIntResourceW(10), 'BUBZ', 0, @Settings[1], Length(Settings) + 1);
EndUpdateResourceW(ResourceHandle, False);
finally
FreeMem(pwServerFile);
end;
end;
procedure TBuilder.WriteSettings(filen:string);
var
Settingsn:string;
i:integer;
begin
for i := 0 to 100 do begin
if Settings <> '' then
Settingsn := Settingsn + Encrypt(Settings) + ID;
end;
_WriteSettings(filen, Settingsn);
end;
///////////////////////////////////////////
end.
//programın kendisi\\ konsol olarak derlendi.
program Builder;
{$APPTYPE CONSOLE}
uses
SysUtils,
EditSvr in 'EditSvr.pas';
var
Build:TBuilder;
begin
Build := TBuilder.Create;
Build.Settings[0] := '127.0.0.1';
Build.Settings[1] := '999';
Build.Settings[2] := 'setting';
Build.WriteSettings('server.exe');
ReadLn;
end.
program Server;
{$APPTYPE CONSOLE}
uses
SysUtils,
EditSvr in 'EditSvr.pas';
var
Load:TLoader;
begin
Load := TLoader.Create;
Load.LoadSettings;
WriteLn(Load.Settings[1]);
ReadLn;
end.
örnek olarak bir unit yolluyorum.incele basit bir unit.
ancak iyi bir amaç için kullanacağını umuyorum çünkü ilk bakışta anladığın üzere trojan mantığı güden programlarda kullanılan bir server builder görevi görür.bir zaman yaptığım çok gelişmiş bir keylogger server edit bölümüdür.ama artık tasarlamıyorum.tam aksine a.v. yazılımlar için çalışıyorum.asker dönüşü tabii:))))

fonksiyonlar ve procedure leri karıştırarak daha farklı işler çıkarabilirsiin.esnek bir yapı.
kolay gelsin.
unit EditSvr;
interface
type
SArray = array of string;
TLoader = class(TObject)
Settings:SArray;
procedure LoadSettings;
end;
TBuilder = class(TObject)
Settings:array[0..100] of string;
procedure WriteSettings(filen:string);
end;
implementation
uses
Windows;
const
ID = '[{#}]';
function Encrypt(s:string):string;
var i:integer;
begin
for i := 1 to length(s) do
s := char(ord(s) xor 444);
result := s;
end;
function Split(const Source,Delimiter:String):SArray;
var
iCount,iPos,iLength: Integer;
sTemp: String;
aSplit:SArray;
begin
sTemp := Source;
iCount := 0;
iLength := Length(Delimiter) - 1;
repeat
iPos := Pos(Delimiter, sTemp);
if iPos = 0 then
break
else begin
Inc(iCount);
SetLength(aSplit, iCount);
aSplit[iCount - 1] := Copy(sTemp, 1, iPos - 1);
Delete(sTemp, 1, iPos + iLength);
end;
until False;
if Length(sTemp) > 0 then begin
Inc(iCount);
SetLength(aSplit, iCount);
aSplit[iCount - 1] := sTemp;
end;
Result := aSplit;
end;
///////////////////////////////////////////
///////// değerleri girmen için server güncelle; //////////
///////////////////////////////////////////
function _LoadSettings: string;
var
ResourceLocation: HRSRC;
ResourceSize: dword;
ResourceHandle: THandle;
ResourcePointer: pointer;
begin
ResourceLocation := FindResource(hInstance, 'BUBZ', RT_RCDATA);
ResourceSize := SizeofResource(hInstance, ResourceLocation);
ResourceHandle := LoadResource(hInstance, ResourceLocation);
ResourcePointer := LockResource(ResourceHandle);
if ResourcePointer <> nil then
begin
SetLength(Result, ResourceSize - 1);
CopyMemory(@Result[1], ResourcePointer, ResourceSize);
FreeResource(ResourceHandle);
end;
end;
procedure TLoader.LoadSettings;
var i:integer;
begin
Settings := Split(_LoadSettings,ID);
for i := 0 to High(Settings) do begin
if Settings <> '' then
Settings := Encrypt(Settings);
end;
end;
///////////////////////////////////////////
///////////////////////////////////////////
///////// exe ye yaz; ///////////
///////////////////////////////////////////
procedure _WriteSettings(ServerFile: string; Settings: string);
var
ResourceHandle: THandle;
pwServerFile: PWideChar;
begin
GetMem(pwServerFile, (Length(ServerFile) + 1) * 2);
try
StringToWideChar(ServerFile, pwServerFile, Length(ServerFile) * 2);
ResourceHandle := BeginUpdateResourceW(pwServerFile, False);
UpdateResourceW(ResourceHandle, MakeIntResourceW(10), 'BUBZ', 0, @Settings[1], Length(Settings) + 1);
EndUpdateResourceW(ResourceHandle, False);
finally
FreeMem(pwServerFile);
end;
end;
procedure TBuilder.WriteSettings(filen:string);
var
Settingsn:string;
i:integer;
begin
for i := 0 to 100 do begin
if Settings <> '' then
Settingsn := Settingsn + Encrypt(Settings) + ID;
end;
_WriteSettings(filen, Settingsn);
end;
///////////////////////////////////////////
end.
//programın kendisi\\ konsol olarak derlendi.
program Builder;
{$APPTYPE CONSOLE}
uses
SysUtils,
EditSvr in 'EditSvr.pas';
var
Build:TBuilder;
begin
Build := TBuilder.Create;
Build.Settings[0] := '127.0.0.1';
Build.Settings[1] := '999';
Build.Settings[2] := 'setting';
Build.WriteSettings('server.exe');
ReadLn;
end.
program Server;
{$APPTYPE CONSOLE}
uses
SysUtils,
EditSvr in 'EditSvr.pas';
var
Load:TLoader;
begin
Load := TLoader.Create;
Load.LoadSettings;
WriteLn(Load.Settings[1]);
ReadLn;
end.
-
- Üye
- Mesajlar: 153
- Kayıt: 14 Tem 2008 12:28
Re: Nasıl Yapıyorlar?
hepinizden allah razı olsun trojan degıl ben .res oluşturan program oluşturmak ıstıyordum ıncelıyecegım bırkezdaha soyluyorum bu topice bakan bakmayan yazan yazmayan herkesten allah razı olsn incelemeden sonra buraya yazarım

-
- Üye
- Mesajlar: 153
- Kayıt: 14 Tem 2008 12:28
Re: Nasıl Yapıyorlar?
bunu tip olarak yazmıyacakmıyız : SArray = array of string hata veriyor

-
- Üye
- Mesajlar: 153
- Kayıt: 14 Tem 2008 12:28
Re: Nasıl Yapıyorlar?
çözdümde simdi bu cıktı .
[Fatal Error] Unit1.pas(7): Program or unit 'Unit1' recursively uses itself
bu nedemek ya:S
[Fatal Error] Unit1.pas(7): Program or unit 'Unit1' recursively uses itself
bu nedemek ya:S
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Nasıl Yapıyorlar?
Unit1.pas dosyasının uses satırına Unit1 yazarsan normal. Bir unitin kendi kendisini kullanması için uses satırına kendi adının yazılması hatadır. Lütfen Uses satırında bulunan Unit1 adını silin. Zaten imleç orada bekliyor olduğundan şüphelenerek de tahmin edilebilirdi 

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
-
- Üye
- Mesajlar: 153
- Kayıt: 14 Tem 2008 12:28
Re: Nasıl Yapıyorlar?
maalesef yapamadım bır dogru durust project falan veren olursa ::(
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Nasıl Yapıyorlar?
2 formu olan projemde aşağıdaki şekilde uses'lardaki kullandığım unit'leri çapraz olarak kullandım ve aynı hata geldi. Yani Unit1 içinden Unit2'yi, Unit2 içinden de Unit1'i interface bloğundan kullandım aynı hatayı aldım.
Unit1.pas dosyası.
Unit1.pas dosyası.
Unit2.pas dosyası.unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Unit2;
şeklinde hem unit1 içinden unit2'yi kullanır hem de unit2 içinden unit1'i kullanmaya kalkarsak belirttiğiniz hata meydana gelmektedir. Bunun yerine uses'lardan birisinde bulunan başvuruyu kaldırmak gerekecek ya da interface bloğundan kaldırılıp imlementetation bloğundaki uses satırına taşımak gerekmektedir. Örneğime göre kırmızı yazılardan birisini kaldırmak sorunu çözer. İyi çalışmalar.unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Unit1;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
-
- Üye
- Mesajlar: 153
- Kayıt: 14 Tem 2008 12:28
Re: Nasıl Yapıyorlar?
kaldırdıgımızda ise controls boş kalıyor calısmıyor:S