Paranoyaklar için :) | Delphi Programming

Transkript

Paranoyaklar için :) | Delphi Programming
Contact Me | Subscribe
D e l p h i
P r o g r a m m i n g
Search Keywords
There are only 10 types of people in the world: Those who understand binary, and those
who don’t.
Home
Hakkında
TObject.Create
Delphi
Ziyaretçi Defteri
Posted by Tuğrul HELVACI - Mayıs 17, 2009 Comments 4
Paranoyaklar için :)
Plugin WP FlashTime by horoscop 2009.org
requires Flash Player 8 or better currency
converter calculator.Plugin creat de horoscop |
horoscop saptamanal | horoscop zilic | horoscop
| play sonic games
Muhtemelen başlığa bakıp kimse bu yazının ilerleyen satırlarını okumak istemeyecektir, çünkü
insan psikolojisi gereği bilinçaltı başlığın kendisine uygun olmadığını düşündürecektir. Ama
kimbilir belki yanılırım okuyanlar olur, ne de olsa tüm dünya üzerinde for Dummies serisi
makale ve kitaplar nerede ise yok satıyor
Siz değerli okuyucularıma paranoyak demiyorum ama benim bazen paranoyakça davrandığım
ve meyvesini bu makale haline getiren bazı olaylar oluyor. Bu makalenin tohumlarının atılmaya
başladığı zaman, tam olarak işletim sistemimde bazı gariplikleri hissetiğim zamana tekabül
ediyor. Bir müddet önce makinamda bir kısım yavaşlık hissettim, yazdığım yazılar sırasında bu
yavaşlığı hissetmem beni hemen keylogger olma ihtimali üzerinde düşündürmeye başlamıştı.
Bu bağlamda, Startup, registry’de çalışan uygulamalar listelerini incelemiş, ardından servisleri
de gözden geçirmiştim. Gereksiz olduğuna inandığım belki de gerekli olduğu halde sildiğim
Etiketler
Absolute Abstract Classes ActionScript Algoritma
API
Bug Byte Arrays Class Reference CloseHandle
COM CreateDesktop CreateEvent CreateMutex
CreateProcess CreateRemoteThread CreateSemaphore
pek çok program oldu
Ancak insanın içine şüphe girdimi bir kere imkan yok çıkmıyor
CreateToolHelp32SnapShot CreateWaitableTimer
DeleteCriticalSection delphi 2010 DTS EnterCriticalSection
PDFmyURL.com
DeleteCriticalSection delphi 2010 DTS EnterCriticalSection
EnumDesktopProc EnumDesktops Flash
Function
Pointer GetCurrentProcess
Bu şüphe ile Task Manager’ı açarak çalışan uygulamaları incelemeye başladım. Kısa bir
müddet sonra Task Manager’da bazı zaman dilimlerinde ortaya çıkan bir uygulama gördüm.
Bir müddet çalışıyor ve kendiliğinden yok oluyordu.(Kendiliğinden yok olmadığı durumlarda ben
yokediyordum itiraf edeyim) Tam sorunu buldum, evet bu EXE dosyasını siler kurtulurum
derken, bu uygulamanın belirli zaman periyotlarında çalışmasının kendi kendine olmayacağını
bunu çalıştıran bir servisin yada ona benzer bir zamanlanmış görevin olması gerektiğini
düşünmeye başladım.
Önce bu uygulamayı çalıştıran mikrobun atasını bulmalıydım. İlk aklıma gelen EXE’nin adını
değiştirmek oldu. Bu durumda beklediğim şey, adı değişen EXE’yi çalıştırmaya çalışacak olan
uygulamanın EXE’yi bulamaması ve hata vermesi idi. Ancak elbetteki pek bir iyimsermişim. O
mikrop uygulama benim adını değiştirdiğim EXE’yi yine oluşturmuştu
O zaman servisleri
incelemeye karar vermiştim. Kahretsin ki makinamda da dünya kadar şey yüklü idi. Yani hiç
de kolay olmayan bir süreçti bu. Epey bir inceleme yaptıktan sonra durdum ve kendi kendime
dedim ki:”Yahu Tuğrul, sen ne yapıyorsun? Sen programcı değil misin?” , sonra diğer ben dedi
ki:”Evet, öyleyim ne olacak?”, o zaman diğeri de “ee o zaman bu EXE’yi kim çalıştırmış onu
bulan bir program yazsana yahu
”.. Bir anda kafamda şimşek çaktı, öyle ya ben bir
GetIconInfo GetKeyState
GetLastInputInfo GetProcessMemoryInfo GetStartupInfo
GetThreadContext GetTickCount GetTickCount64
Hacking Inheritance InitializeCriticalSection
Interface InterlockedCompareExchange
InterlockedDecrement InterlockedExchange
InterlockedExchangeAdd InterlockedIncrement
JavaScript LeaveCriticalSection Method Pointer
Module32First Module32Next MSSQL OpenDesktop
OpenEvent OpenMutex OpenSemaphore
OpenWaitableTimer Operator Overloading
Persistance
Pointer Procedure Pointer Process
Process32First Process32Next Query QueryInterface
QueryPerformanceCounter Queue ReleaseMutex
ReleaseSemaphore Reqursion ResetEvent ResumeThread
RTTI SetEvent SetProcessWorkingSetSize
SetThreadContext SetWaitableTimer Smilarity SORT SQL
SQL Server
Stream SuspendThread Sw itchDesktop
TDateTime TerminateProcess TerminateThread
Thread TInterfacedObject TValue Untyped
Parameters VirtualAllocEx VirtualFreeEx
programcıydım bunu bulabilirdim
Açtım Delphi’mi nereden başlayacağımı düşünmeye başladım. Daha önceleri çeşitli
projelerimde sistemde çalışan process’leri almam gerektiğini ve gerekli kodları yazdığımı
hatırladım. Kısa bir araştırmadan sonra process listesi için CreateToolHelp32SnapShot API’sini
kullandığımı hatırladım. Bir kaç deneme yanılmadan sonra istediğimi elde ettim. Eğer sizde
bazı zamanlar sisteminizden şüpheye düşerseniz, yazdığım bu metodu kullanmayı bir
WaitForSingleObject
WaitForMultipleObjects
Weaver WriteProcessMemory _AddRef _Release
WP Cumulus Flash tag cloud by Roy Tanck
requires Flash Player 9 or better.
deneyin. Eminim ki mikrobu bulup kendinizi rahatlamış hissedeceksiniz
Buyrun kodlamaya başlayalım:
1.
function CreateToolhelp32Snapshot(dwFlags, th32ProcessID:
DWORD): THandle;
Yukarıda yazmış olduğum fonksiyon TLHelp32.pas dosyası içinde tanımlıdır. Bu yüzden uses
kısmına bu unit’i eklemeyi unutmamalıyız öncelikle. Bu fonksiyona geçilen birinci parametre
aşağıdaki değerleri alabilir:
01.
02.
03.
04.
TH32CS_SNAPHEAPLIST
TH32CS_SNAPPROCESS
TH32CS_SNAPTHREAD
TH32CS_SNAPMODULE
= $00000001;
= $00000002;
= $00000004;
= $00000008;
Son Yorumlar
Yeni Veri Tipleri ve Operator Overloading için
Tuğrul HELVACI
Yeni Veri Tipleri ve Operator Overloading için
Zafer Çelenk
Delphi ve Google Maps API için Tuğrul
HELVACI
Delphi ve Google Maps API için ahmet
PDFmyURL.com
05.
06.
07.
08.
09.
TH32CS_INHERIT
TH32CS_SNAPALL
= $80000000;
= TH32CS_SNAPHEAPLIST or
TH32CS_SNAPPROCESS or
TH32CS_SNAPTHREAD or
TH32CS_SNAPMODULE;
Bu sabitler aslında işletim sistemi üzerinde nelerin aranacaklarını isimlerinden anlatıyorlar.
Ancak bir noktaya dikkat çekmek gerekiyor. CreateToolhelp32Snapshot fonksiyonunun ikinci
parametresi bizden bir process id beklemektedir. Eğer o parametreye geçerli bir process’in
id’sini verirseniz sadece o process için arama yapmış olacaksınız. Farzı misal
TH32CS_SNAPTHREAD kullanıyorsunuz ve çalışan uygulamanızın process id’sini de ikinci
paremetre olarak geçtiniz.Bu durumda çalışan uygulamanızın içindeki thread’ler içinde
dönmüş olacaksınız. Yani sadece sizin belirttiğiniz uygulamadaki Thread’lerin o anlık
görüntüsünün fotoğrafı çekilecektir(Snapshot). Ancak, eğer ikinci parametreye herhangi bir id
vermezseniz yani sıfır olarak geçerseniz, o zaman işletim sistemi üzerindeki tüm thread’lerle
ilgileniyorsunuz demektir. Peki biz ne ile ilgileniyorduk ?
İşletim sistemi üzerinde çalışan process’ler ile. Dolayısı ile diğer bilgilerin anlık fotoğrafını
çekip gelecek result’ı arttırmanın bir alemi yok benim için. Bu uygulamada
TH32CS_SNAPPROCESS sabitini kullanmam benim için yeterli olacaktır. Tamam diyelim ki
CreateToolhelp32Snapshot ile o anda işletim sisteminde çalışan uygulamaların fotoğrafını
çektik, ama hala o processler arasında nasıl dolaşılacağını bilmiyoruz. Windows API Help’ten
CreateToolhelp32Snapshot’ı bulup, Group kısmına baktığımızda bizim ihtiyacımız olan iki
fonksiyonu da gözlemleyebiliyoruz. Bunlar; Process32First ve Process32Next. Delphi’deki
tanımlarına hep birlikte bakalım:
1.
2.
function Process32First(hSnapshot: THandle; var lppe:
TProcessEntry32): BOOL;
function Process32Next(hSnapshot: THandle; var lppe:
TProcessEntry32): BOOL;
Fonksiyonlardan anlaşıldığı üzere her iki fonksiyonda parametre olarak
CreateToolHelp32SnapShot’dan geri dönen snapshot id’sini alıyor ve bir de TProcessEntry32
tipinde bir record variable’ın adresini istiyor. Tüm bu bilgilerin ışığında kodumuzu yazmaya
başlayabiliriz:
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
function FindParentProcess(const ExeName : String) : String;
var
SnapHandle : THandle;
peCurrent,
peParent
: TProcessEntry32;
found : Boolean;
begin
Result := '';
SnapHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,
0);
Ziyaretçi Defteri için Tuğrul HELVACI
Son Yazılar
Yeni Veri Tipleri ve Operator Overloading
Interface Nedir, Nerelerde ve Neden Kullanırız ?
Derinlemesine Threading..(3)
SQL’de Benzerlik Algoritmaları…
Full Text Searching…
Kategoriler
Genel (4)
IDE (1)
İşletim Sistemi (7)
Programlama (43)
.Net (3)
C# (2)
Delphi (43)
Grafik (2)
Internet (4)
Veritabanı (3)
Win32 (6)
Takvim
Temmuz 2010
Pts Sal Çar Per Cum Cts Paz
PDFmyURL.com
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
peCurrent.dwSize := SizeOf(TProcessEntry32);
peParent.dwSize := SizeOf(TProcessEntry32);
Process32First(SnapHandle, peCurrent);
found := false;
while 1 <> 2 do
begin
if peCurrent.szExeFile = ExeName then
begin
found := true;
Break;
end;
if not Process32Next(SnapHandle, peCurrent) then Break;
end;
if not found then
begin
CloseHandle(SnapHandle);
raise Exception.Create('Belirtilen ' + ExeName + '
bulunamadı.!');
end;
Process32First(SnapHandle, peParent);
found := false;
while 1 <> 2 do
begin
if peParent.th32ProcessID = peCurrent.th32ParentProcessID
then
begin
found := true;
Break;
end;
if not Process32Next(SnapHandle, peParent) then Break;
end;
if found then Result := peParent.szExeFile;
CloseHandle(SnapHandle);
end;
Yukarıdaki kodda unutulmaması gereken büyük-küçük harf duyarlılığıdır. Dilerseniz yazdığımız
fonksiyonu test edelim:
01.
02.
03.
5
12
19
26
6
13
20
27
7
14
21
28
1
8
15
22
29
2
9
16
23
30
3
10
17
24
31
4
11
18
25
« Haz
Arşivler
Haziran 2010 (1)
Mayıs 2010 (1)
Nisan 2010 (3)
Ağustos 2009 (1)
Temmuz 2009 (2)
Haziran 2009 (7)
Mayıs 2009 (32)
Bağlantılar
Bir Türkçe Sevdalısı..
Delphi Türkiye Forum
Gürcan ÖZTÜRK
M.Fatih KÜÇÜKKELEPÇE
Memik YANIK Kişisel
Memik YANIK’ın Günlüğü
Nick Hodges
Sinan BARAN
Zafer Çelenk
uses ShellAPI;
..
..
PDFmyURL.com
04.
05.
06.
07.
08.
09.
10.
11.
12.
..
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Handle, PChar('open'), PChar('calc.exe'), nil,
nil, SW_SHOW);
ShowMessage(FindParentProcess('calc.exe')); // Project1.exe
ShowMessage(FindParentProcess('Project1.exe')); //
delphi32.exe
ShowMessage(FindParentProcess('delphi32.exe')); //
explorer.exe
end;
Sanıyorum hepimizin bazı zamanlar virüsler yada trojanlarla alakalı paranoyalarımız olur,işte o
zamanlarınızda bu kodu kullanıp virüse yada trojana hak ettiği dersi verebilirsiniz
Saygılar, sevgiler..
[Translate]
4 Comments
Olcay DAĞLI
on Mayıs 18th, 2009
Ziyaretçi Bilgileri
Ziyaret: 4 / 12073
Beğenilenler
Delphi 2010 (Weaver) ve TValue - 14 votes
Derinlemesine Threading..(3) - 13 votes
Derinlemesine Threading..(2) - 6 votes
Derinlemesine Threading..(1) - 6 votes
Yeni Veri Tipleri ve Operator Overloading - 4
votes
Win32 & .Net(Delphi->C#) - 4 votes
Delphi ve Google Maps API - 3 votes
TThread.WaitFor Bug.. - 3 votes
BITS(Background Intelligent Transfer Service)
ile sessiz sedasız download ;) - 3 votes
Bir Kiosk ve CreateDesktop macerası.. - 3
votes
Her bilgisayar kullanıcısı mutlaka bu tarz trojanlar ile karşılaşabilir
yada karşılaşmıştır. Gerçekten çok faydalı bir kod olmuş hocam, ben
şahsen bu paronayayı çok yaşamış biri olarak eline sağlık diyorum…
Meta
Tuğrul HELVACI
on Mayıs 18th, 2009
Şu Desktop create etme ile ilgili makaleyi yazana kadar daha ne
paranoyalar geçiririm ben sanırım , acaba sana ödev olarak mı versem
ne de olsa mevzuyu anlattım sana :p
Giriş
Yazılar RSS
Yorumlar RSS
WordPress.org
Etiketler-Liste
PDFmyURL.com
Olcay DAĞLI
on Mayıs 19th, 2009
Sen onu bana verirsen ben o makaleyi muhtemelen API lerin
kullanılmadığı bir dönemde bitirmiş olurum ki o zamanda pek
Absolute
kullanan olmaz sanırım
API
Byte Arrays Class Reference
COM CreateDesktop CreateProcess
CreateRemoteThread
CreateToolHelp32SnapShot
Function
DTS EnumDesktopProc EnumDesktops
Pointer GetCurrentProcess
Furkan BACACI
on Kasım 23rd, 2009
Evt Gercekten cok yararlı olmus ellerine saglık ancak mesela
yazdıgınız kodda hesap makınesını calıstırmıssınız onuda aynı proje
ıcınde project1 adında calıstırmıssınız soylekı baska bi programdan
calc.exe yi calıstırdıgınızda calc.exe yi neyin çalıştırdıgını gösteriyor
ama eğer calc.exe yi çalıştırdıkdan sonra program kapatıyorsa kendını
gostermıyor bu yolla calısan trojanlerde mevcut =) ama gercekten
güzel olmus
GetIconInfo GetKeyState
GetLastInputInfo GetProcessMemoryInfo GetStartupInfo
Hacking Inheritance Interface JavaScript
Method Pointer Module32First Module32Next
OpenDesktop Persistance Pointer Procedure
Pointer
Process Process32First Process32Next
Reqursion
RTTI SetProcessWorkingSetSize SQL
Server Sw itchDesktop TerminateProcess
Thread Untyped Parameters VirtualAllocEx
WaitForSingleObject
VirtualFreeEx
WriteProcessMemory
Share your comment
Delphi About
Name (required)
Mail (required)
Website
Auto Select All The Text For TCustomEdit On
Mouse Click 29 Haziran 2010
Memory Leak Notification in Delphi - Report
Memory Leak on Program Exit 27 Haziran
2010
PCRE Workbench - Regular Expression Test
Tool - Source Code Delphi Application 22
Haziran 2010
Deleting Dataset Records In a Loop - Poll
PDFmyURL.com
Deleting Dataset Records In a Loop - Poll
Results - Why All Records Are Not Deleted 21
Haziran 2010
Force TListView's Edit Mode using a Keyboard
Shortcut 17 Haziran 2010
Implementing On Item Click / Double Click for
Delphi's TListView control 16 Haziran 2010
Run Your Delphi Application in Full Screen Implement "F11 - Full Screen" 14 Haziran 2010
Displaying Enumerated Properties in a
Selectable List - Run-Time Enum Selection in
Delphi 10 Haziran 2010
How Do You Delete Dataset Records In a
Loop? 08 Haziran 2010
Display Custom Hints for Status Bar Panels 07
Haziran 2010
Sık Ziyaret Edilenler
Sayfa: Home
(16059)
Delphi ve Google Maps API
(4132)
Delphi ve Google Maps API
(1973)
Nedir bu Thread’lerden çektiğimiz..!
(1444)
Delphi & Animated Flash Charts(Fusion Charts)
(1174)
Delphi & JavaScript Kardeşliği
(933)
Delphi 2010 (Weaver) ve TValue
(918)
Derinlemesine Threading..(1)
(886)
Derinlemesine Threading..(2)
(695)
PDFmyURL.com
Win32 & .Net(Delphi->C#)
(617)
Kategori: Delphi
(613)
Bir Kiosk ve CreateDesktop macerası..
(568)
Sayfa: Hakkında
(563)
TThread.WaitFor Bug..
(540)
Delphi 2010 (Weaver) ve TValue
(530)
Oylama..
Sitedeki makaleleri yararlı buluyor musunuz
?
Evet, yararlı ama yetersiz.
Evet, son derece yararlı.
Evet, mükemmel.
Hayır, yararlı değil.
Hayır, hem yararlı değil, hem de yetersiz.
Hayır, rezalet.
Vote
View Results
Delphi'nin hangi sürümünü kullanıyorsunuz
?
Delphi 5 yada öncesi
Delphi 6
PDFmyURL.com
Delphi 7
Delphi 8
Delphi 2005
Delphi 2006
Delphi 2007
Delphi 2009
Delphi 2010
Vote
View Results
Son Yorumlar
Yeni Eklenenler
Linkler
Yorumunuza teşekkürler. Aslında operatör aşırı
yüklemenin sınıflarda pek bir avantaj... by Tuğrul
HELVACI
Yeni Veri Tipleri ve Operator Overloading
Bir Türkçe Sevdalısı.. - Taha EKREM
Interface Nedir, Nerelerde ve Neden Kullanırız ?
Delphi Türkiye Forum
Merhaba, Ben ilk olarak merakımdan dolayı uğraştığım
C++ dilinde görmüştüm Operatör... by Zafer Çelenk
Derinlemesine Threading..(3)
Gürcan ÖZTÜRK - Gürcan ÖZTÜRK
SQL’de Benzerlik Algoritmaları…
M.Fatih KÜÇÜKKELEPÇE
Full Text Searching…
Memik YANIK Kişisel
Delphi 2010 (Weaver) ve TValue
Memik YANIK’ın Günlüğü
Derinlemesine Threading..(2)
Nick Hodges
Merhaba, makaleyi yazdığım zaman kodlarda bir sorun
yoktu. Belki Google Maps'de bir şeyler... by Tuğrul
HELVACI
Merhaba Kodlarda bir sorun mu var? yoksa ggogle bu
hizmeti durdurdu mu? Sadece boş bir... by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerde
yazsa idiniz mesajınızı daha... by Tuğrul HELVACI
Sinan BARAN
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenle
hata ediyorsam özür dilerm bir iş ilanı... by geyikben
Teşekkürler ;) by Tuğrul HELVACI
PDFmyURL.com
Copyright © 2009 Delphi Programming
Pow ered by WordPress | Increase Traffic w ith TrafficWhirl.
PDFmyURL.com

Benzer belgeler

Yüzen kontroller.. :) | Delphi Programming

Yüzen kontroller.. :) | Delphi Programming BITS(Background Intelligent Transfer Service) ile sessiz sedasız download ;) - 3 votes Bir Kiosk ve CreateDesktop macerası.. - 3 votes

Detaylı

Uygulamamızın kullandığı hafıza miktarını nasıl düşürebiliriz

Uygulamamızın kullandığı hafıza miktarını nasıl düşürebiliriz gostermıyor bu yolla calısan trojanlerde mevcut =) ama gercekten güzel olmus

Detaylı