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
BITS(Background Intelligent Transfer Service)
ile sessiz sedasız download ;) - 3 votes
Bir Kiosk ve CreateDesktop macerası.. - 3
votes
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