Visual Basic - Basic - PicBasic ve Türevleri
Explorer‘İn Aktif Olan Klasör Yolunu Nasıl Alırız (VB6)
Explorer‘İn Aktif Olan Klasör Yolunu Nasıl Alırız (VB6)
-
Mesela c' den alibaba klasörüne girdim, formumda C:\Alibaba yazsın istiyorum
Nasıl yapabiliriz
-
dll apileriyle bence
-
tutrakan_d bunu yazdı:
-----------------------------
dll apileriyle bence
-----------------------------Hangi api
-
kernel32 nin GetCurrentDirectoryA functionunu hook la
edit: ben cosmic
-
JeremYC30 bunu yazdı:
-----------------------------
kernel32 nin GetCurrentDirectoryA functionunu hook la
edit: ben cosmic
-----------------------------GetCurrentDirectoryA = App.path
Programın yolunu gösteriyor
edit: zahmetli geldi :D
-
Yukarı
-
Son bir up daha :)
Explorer.exe nin
Handle no: 001E0812
Class ismi: ToolbarWindow32
bu classın caption&text değerini almak istiyorum
Antivirüslerin klasörleri sezdiği gibi olsun istiyorum. En son açılan explorer adresini alır belki (Handle numaralarını sırayla gezipde alabilir hepsini)
-
XP'de aldım ama windows 7 de alamıyorum :/
Windows 7'de almak için adres çubuğuna tıklamam gerekiyor
-
findwindowA/W/EX kullanmak biraz amatorce olur
ufak bir dll yazip explorer.exe ye inject ettikten sonra Kernel32.dll deki GetCurrentDirectoryA / W apilerini hook ederek cok basitce alabilirsin..
-
WH0 bunu yazdı:
-----------------------------findwindowA/W/EX kullanmak biraz amatorce olur
ufak bir dll yazip explorer.exe ye inject ettikten sonra Kernel32.dll deki GetCurrentDirectoryA / W apilerini hook ederek cok basitce alabilirsin..
-----------------------------Bu da iyi bir yol ama çok masraflı , özellikle UAC geldikten sonra (gVeR bilir :). Ayrıca dll i inject ettiğin process ile (explorer.exe burda) kendi process in arasında iletişim kurman gerekecek aktif dizin adını yollamak için. (pipe, file mapping, shared section vb ek kod)
Bunun yerine SetWindowsHookEx, WH_GETMESSAGE ile çağırılabilir ve hook procedure içinde WM_ACTIVATE mesajı kontrol edilebilir. Bu mesaj hem aktifliği kaybeden pencereye hem de yeni aktif olan pencereye gönderilir, sadece birisi işlenmeli.
-
Tugberk in dedigi gibi setwindowHookEx apisi de kullanilabilir.. DLL Injection da zaten soyle bir durum ortaya cikabilir
32 bit process 64 bit process e inject edilemez yani hem x32 hemde x64 bit için derleme yapman gerekir.
@UAC aktif olsa bile DLL Injectionu engelleyemez.DLL injectionu yapabilen bir coder haberleşmeyi de yapabilecek bilgiye sahiptir;)
ReadProcessMemory,Set/Get-ThreadContext, WriteProcessMemory CreateProcessA ve CreateRemoteThread apilerini kullanabilirsin oldukca basit.