2012-05-10 13 views
8

Windows'ta CreateRemoteThread kullanıyorum ve Linux'ta aynı şeyin mümkün olup olmadığını öğrenmek istiyorum. Bunu Linux'ta yapmak mümkün mü?CreateRemoteThread in Linux

+0

bu nasıl bir C++ sorusu? –

+0

CreateRemoteThread, C++ kodunda kullanılmış olan bir WINAPI'dir. – CrazyC

cevap

-2

`#include pthread.h

int pthread_create (void pthread_t * iplik, const pthread_attr_t * öznitelik, boşluk * (* start_routine) (*), void * arg); ile` Derleme ve bağlantı - pthread.

ayrıntı için adam pthread_create bakınız

+2

Bir iş parçacığı oluşturma, iş parçacığı oluşturma ve bunu uzak bir işlem içine nasıl enjekte edeceğiniz budur. –

6

Linux üzerinde bunu yapmanın geleneksel yolu ayrı ayrı, sonra onun içine koduyla dinamik kitaplık (bu nedenle) oluşturmak çalışan uygulama içine kütüphanede yüklenmesini zorlamak olurdu . Windows'da CreateRemoteThread olduğu gibi tek duraklı bir dükkan yoktur.

Yani burada

temel adımları şunlardır: o uzak süreçte yürütmek isteyen kod içeriyor böylece

  1. /a dylib oluşturun.
  2. Belirtilen dosyayı yükleyen derlemede çok basit bir kod yazın (özellikle this link, bölüm 1'den kopyalayıp yapıştırın).
  3. Söz konusu yükleyici ASM'yi 2. kod dosyası/uygulamasında bir arabellekte ikili yük olarak yerleştirin. Burada, adım 2'de yazılan ikili yükü çalıştırmak için ptrace'u kullanacaksınız; bu, hedef uygulamasının, çalıştırmak istediğiniz gerçek kodu içeren 1. adımda oluşturulan .so üzerinde _dl_open() numarasını çağırmasını tetikleyecek. Eğer ana pompadan ayrı bir konu çalıştırmak için kodu gerekir, o zaman adımda kodunda 1.

    Umut bu pthread_create kullanmalıdır (the same link verilen örnek, bölüm 2.)

sorunuzu cevaplar. Evet, Windows’dan daha çok yer alıyor; ama eşit derecede iyi çalışmalı. Ayrıca, gelecekteki uzaktan kod enjeksiyon projeleri için adım 2 ve 3'teki kodun tamamını yeniden kullanabilirsiniz.