Nasıl Yapıyorlar?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
umutcanster
Üye
Mesajlar: 153
Kayıt: 14 Tem 2008 12:28

Nasıl Yapıyorlar?

Mesaj gönderen umutcanster »

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
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: Nasıl Yapıyorlar?

Mesaj gönderen sadettinpolat »

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...
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
umutcanster
Üye
Mesajlar: 153
Kayıt: 14 Tem 2008 12:28

Re: Nasıl Yapıyorlar?

Mesaj gönderen umutcanster »

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
Kullanıcı avatarı
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?

Mesaj gönderen sabanakman »

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. - .
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: Nasıl Yapıyorlar?

Mesaj gönderen sadettinpolat »

sadettinpolat yazdı:
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.
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.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
umutcanster
Üye
Mesajlar: 153
Kayıt: 14 Tem 2008 12:28

Re: Nasıl Yapıyorlar?

Mesaj gönderen umutcanster »

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ı?
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: Nasıl Yapıyorlar?

Mesaj gönderen sadettinpolat »

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
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: Nasıl Yapıyorlar?

Mesaj gönderen G.Arkas »

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:)))) :lol:
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.
Resim
umutcanster
Üye
Mesajlar: 153
Kayıt: 14 Tem 2008 12:28

Re: Nasıl Yapıyorlar?

Mesaj gönderen umutcanster »

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 :bravo:
umutcanster
Üye
Mesajlar: 153
Kayıt: 14 Tem 2008 12:28

Re: Nasıl Yapıyorlar?

Mesaj gönderen umutcanster »

bunu tip olarak yazmıyacakmıyız : SArray = array of string hata veriyor :)
umutcanster
Üye
Mesajlar: 153
Kayıt: 14 Tem 2008 12:28

Re: Nasıl Yapıyorlar?

Mesaj gönderen umutcanster »

çözdümde simdi bu cıktı .

[Fatal Error] Unit1.pas(7): Program or unit 'Unit1' recursively uses itself


bu nedemek ya:S
Kullanıcı avatarı
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?

Mesaj gönderen sabanakman »

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 :wink:
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
umutcanster
Üye
Mesajlar: 153
Kayıt: 14 Tem 2008 12:28

Re: Nasıl Yapıyorlar?

Mesaj gönderen umutcanster »

maalesef yapamadım bır dogru durust project falan veren olursa ::(
Kullanıcı avatarı
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?

Mesaj gönderen sabanakman »

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ı.
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Unit2;
Unit2.pas dosyası.
unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Unit1;
ş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.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
umutcanster
Üye
Mesajlar: 153
Kayıt: 14 Tem 2008 12:28

Re: Nasıl Yapıyorlar?

Mesaj gönderen umutcanster »

kaldırdıgımızda ise controls boş kalıyor calısmıyor:S
Cevapla