Diğer programın değişkenlerini değiştirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Diğer programın değişkenlerini değiştirme

Mesaj gönderen PROGRAMADOR »

İki uygulamamız var. İki uygulamayı da kendimizin yaptığını düşünelim. Bir uygulamadan diğer uygulamanın değişkenleri değiştirilebilir mi? Diğer porgramdaki değişkenlerin pointerlarına erişmek mümkün mü?
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Re: Diğer programın değişkenlerini değiştirme

Mesaj gönderen warder »

RAM üzerinde değiştirmeyi soruyorsunuz anladığım kadarıyla ama...
Ortak bir dosyadan (ini, registry vb.) beslenen değişkenlerle daha kolay (potansiyel bug olmadan, kernel ile boğuşmadan, antivirus vb.) yapılabilir.
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: Diğer programın değişkenlerini değiştirme

Mesaj gönderen PROGRAMADOR »

Ancak ben anında değişiklik olsun istiyorum değişkende. İni ve benzer dosyalarda sürekli dosyayı kontrol etmek performans düşüklüğüne neden olacaktır. Bir service uygulama yapmayı düşünüyorum. Oluşturacağım formlu programlardan da veri göndermek ve veri almak istiyorum.
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: Diğer programın değişkenlerini değiştirme

Mesaj gönderen G.Arkas »

Exe içerisine (WriteRes) gibi BlockWrite modunda belirlediğiniz alana yazma işlemi gerçekleştirebilirsiniz. Aynı zaman da Truva atları da bu yöntemi kullandığından virüs algılama olasılığı çok yüksek.
Resim
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Diğer programın değişkenlerini değiştirme

Mesaj gönderen SimaWB »

2 programı da siz yazıyorsanız aralarında bir mesajlaşma altyapısı kursanız. TCP vs. ile kendi belirlediğiniz bir protokolde...
There's no place like 127.0.0.1
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: Diğer programın değişkenlerini değiştirme

Mesaj gönderen PROGRAMADOR »

Socket haricinde bir yolu var mı?
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Diğer programın değişkenlerini değiştirme

Mesaj gönderen thelvaci »

Bir çok yolu var. CreateFileMapping, Post/SendMessage, WriteProcessMemory/CreateRemoteThread, socket vb. Kendinize hangisi uyuyor ise onu kullanmanız mantıklı olacaktır.
cmkare
Üye
Mesajlar: 177
Kayıt: 23 Ağu 2010 11:29

Re: Diğer programın değişkenlerini değiştirme

Mesaj gönderen cmkare »

2 program yerine tek program üzerinde yap tüm işlemi.. daha sonra başlangıç formları değiştirip 2 tane exe oluşturabilirsin.. :D
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: Diğer programın değişkenlerini değiştirme

Mesaj gönderen PROGRAMADOR »

İki ayrı program üzerinden yapmam gerekiyor.

Yardımlarınız için teşekkür ederim. Önerdiklerinizin çoğunu araştırdığımda antiviruslerle sorun olacağını anladım. Antiviruslerden kaçmanın yolu var mı?
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: Diğer programın değişkenlerini değiştirme

Mesaj gönderen G.Arkas »

Dynamic API Calling - Xor - API Encrypting konularını araştırabilirsin.
Resim
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: Diğer programın değişkenlerini değiştirme

Mesaj gönderen PROGRAMADOR »

Teşekkürler. İnceleyip sizinle tekrar görüşlerimi paylaşacağım.
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: Diğer programın değişkenlerini değiştirme

Mesaj gönderen G.Arkas »

PROGRAMADOR yazdı:Teşekkürler. İnceleyip sizinle tekrar görüşlerimi paylaşacağım.
Hazir elin degmisken Polimorphysim'ide arastirirsan cok faydasini gorursun. :wink:
Resim
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: Diğer programın değişkenlerini değiştirme

Mesaj gönderen PROGRAMADOR »

Merhaba,

Create File Mapping ile yapmaya karar verdim. Antiviruslere de takılmıyor. Test edilmiştir.

Kod: Tümünü seç

  type
  TSharedMemory = class(Tobject)
   HMapping: THandle;
   PMapData: Pointer;
   HMapMutex: THandle;
   procedure OpenMap;
   procedure CloseMap;
   function LockMap:Boolean;
   procedure unLockMap;
  end;
şeklinde bir sınıf buldum bir open source programda. Kodun tamamını yazayım:

Kod: Tümünü seç


procedure TSharedMemory.OpenMap;
 var
   llInit: Boolean;
  // lInt: Integer;
 begin
   HMapping := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE,
                 0, 512, pchar('MY MUTEX NAME GOES HERE'));
   // Check if already exists
   llInit := (GetLastError() <> ERROR_ALREADY_EXISTS);
   if (hMapping = 0) then
   begin
     //ShowMessage('Can''t Create Memory Map');
     //Application.Terminate;
     exit;
   end;
   PMapData := MapViewOfFile(HMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0);
   if PMapData = nil then
   begin
     CloseHandle(HMapping);
     //ShowMessage('Can''t View Memory Map');
    // Application.Terminate;
     exit;
   end;
   if (llInit) then
   begin
     // Init block to #0 if newly created

      FillChar(PMapData^, 512, 0);
   end
 end;

procedure TSharedMemory.CloseMap;
begin
 if PMapData<>nil then UnMapViewOfFile(PMapData);
 if HMapping<>0 then CloseHandle(HMapping);
end;

function TSharedMemory.LockMap:Boolean;
begin
   Result:=true;
   HMapMutex := CreateMutex(nil, false,pchar('Ares_mmap_mutex'));
   if HMapMutex = 0 then begin
    // ShowMessage('Can''t create map mutex');
     Result := false;
   end else begin
     if WaitForSingleObject(HMapMutex,1000) = WAIT_FAILED then begin
       // timeout
      // ShowMessage('Can''t lock memory mapped file');
       Result := false;
     end
   end
 end;
 
procedure TSharedMemory.UnlockMap;
begin
 ReleaseMutex(HMapMutex);
 CloseHandle(HMapMutex);
end;




In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Cevapla