C Exe Oluşturan Program (Yardım)
-
Virüslerde çok kullanılır özellikle keyloggerlarda email adresi ve şifresini yazarsınız yarat dediğinizde farklı bir exe yaratır.Benim amacım programı çalıştırdığımda scanfle yazı alıp bir exe yaratmak bu yarattığı exede scanfle aldığım yazıyı printfle ekrana yazdırmasını istiyorum.Kolay yada zor olup olmadığını bilmiyorum google dan araştırmaya çalıştım fakat sonuç alamadım.Böyle bir yöntem varsa ismini yazarsanız çok iyi olur bildiğiniz herhandi bir kaynak varsa link verirseniz çok iyi olur ing türkçe farketmez.
-
Compiling code on the fly olarak geçiyordu sanırım bu teknik
-
c den anlarım ama dediklerin bulmaca gibi
-
Hocam yeni bi exe dediğin nasıl yani belli kodları alıp yeni bi exe mi oluşturucak onun için tekrar compile etmesi gerekmez mi ?
-
yani anladığım kadarıyla istediğin şey;
Bi keylogger yazıcaksın ve oluşturulacak server kodları bu programın içinde olucak ve bazı kısımları mesela mail adresi bi değişken olucak ve o değişkenin değeri serverdaki yerine yazılıp derlenecek ve serverın exesi oluşturulacak.
Doğru anlamışmıyım? daha sonra okuduğun şeyleri niye tekrar ekrana yazdırcaksın onu anlamadım :/
-
Çok fazla yolu var, en çok kullanılanlar şöyle, bir exe stub olarak dosya içinde tutuluyor, girilen değere göre, eposta vb değerlerin bulunduğu dosya offseti editlenerek bu dosya çıktı olarak veriliyor. Bir başka çok kullanılan yöntem dosyanın bilgileri resource'da tutması, resource fonksiyonlarıyla kolayca okunup işlem uygulanıyor, daha çok farklı yöntemler var ancak senin bu istediğini yapmak için harici bir exe ye ihtiyaç yok.
Kötü bir yöntem olmakla beraber (resource'dan okuma yanında çok kötü bir yöntem :) şu yöntemi izleyebilirsin, kendi çalıştığın dosyayı açarsın, en son baytı (benim örnekte 0xFF) mi diye bakarsın, eğer öyleyse , dosya sonundan belirli bir miktar okursun, printf ile yazılcak yazı burdadır, sonra ekrana yazarsın, eğer FF değilse, kullanıcıdan bir yazı alırsın, dosyanın bir kopyasını çıkarıp bu yazıyı dosya sonuna eklersin, son baytı da 0xFF yaparsın, benim örnekte bu dosya out.exe, böylece exe çalışınca o eklenmiş olan yazıyı ekrana basar.
Yani derleyip çalıştırınca Yazi: şeklide bir yazı bekliyecek, yazıyı girdikten sonra program kapanack ve aynı dizinde bir out.exe oluşacak, işte o exe senin yazdığını ekrana basan exe.
Not: Visual C++ 2010 için proje otomatik unicode açılıyor, ayarlardan onu not set yapmalısın, visual C++ 6.0 ya da MinGW Gcc için sorun yok.
#include <windows.h> #include <stdio.h> #define BUFSIZE 256 int main() { FILE *src,*dest; char filename[BUFSIZE] = {0}; char tmp [BUFSIZE] = {0}; GetModuleFileName(NULL, (LPSTR)filename, sizeof(filename)); if (NULL == (src = fopen(filename,"rb"))) { return 1; } fseek(src,-BUFSIZE,SEEK_END); fread(tmp,1,BUFSIZE,src); fclose(src); if ((unsigned char)tmp[BUFSIZE-1] == 0xFF) { printf("%s",tmp); getchar(); } else { printf("Yazi : "); gets(tmp); CopyFile((LPCSTR)filename,"out.exe",FALSE); if (NULL == (dest = fopen("out.exe","a+b"))) { return 1; } tmp[BUFSIZE-1] = 0xFF; fwrite(tmp,1,BUFSIZE,dest); fclose(dest); } return 0; }
-
Tugberk bunu yazdı:
-----------------------------
Çok fazla yolu var, en çok kullanılanlar şöyle, bir exe stub olarak dosya içinde tutuluyor, girilen değere göre, eposta vb değerlerin bulunduğu dosya offseti editlenerek bu dosya çıktı olarak veriliyor. Bir başka çok kullanılan yöntem dosyanın bilgileri resource'da tutması, resource fonksiyonlarıyla kolayca okunup işlem uygulanıyor, daha çok farklı yöntemler var ancak senin bu istediğini yapmak için harici bir exe ye ihtiyaç yok.
Kötü bir yöntem olmakla beraber (resource'dan okuma yanında çok kötü bir yöntem :) şu yöntemi izleyebilirsin, kendi çalıştığın dosyayı açarsın, en son baytı (benim örnekte 0xFF) mi diye bakarsın, eğer öyleyse , dosya sonundan belirli bir miktar okursun, printf ile yazılcak yazı burdadır, sonra ekrana yazarsın, eğer FF değilse, kullanıcıdan bir yazı alırsın, dosyanın bir kopyasını çıkarıp bu yazıyı dosya sonuna eklersin, son baytı da 0xFF yaparsın, benim örnekte bu dosya out.exe, böylece exe çalışınca o eklenmiş olan yazıyı ekrana basar.
Yani derleyip çalıştırınca Yazi: şeklide bir yazı bekliyecek, yazıyı girdikten sonra program kapanack ve aynı dizinde bir out.exe oluşacak, işte o exe senin yazdığını ekrana basan exe.
Not: Visual C++ 2010 için proje otomatik unicode açılıyor, ayarlardan onu not set yapmalısın, visual C++ 6.0 ya da MinGW Gcc için sorun yok.
#include #include #define BUFSIZE 256 int main() { FILE *src,*dest; char filename[BUFSIZE] = {0}; char tmp [BUFSIZE] = {0}; GetModuleFileName(NULL, (LPSTR)filename, sizeof(filename)); if (NULL == (src = fopen(filename,"rb"))) { return 1; } fseek(src,-BUFSIZE,SEEK_END); fread(tmp,1,BUFSIZE,src); fclose(src); if ((unsigned char)tmp[BUFSIZE-1] == 0xFF) { printf("%s",tmp); getchar(); } else { printf("Yazi : "); gets(tmp); CopyFile((LPCSTR)filename,"out.exe",FALSE); if (NULL == (dest = fopen("out.exe","a+b"))) { return 1; } tmp[BUFSIZE-1] = 0xFF; fwrite(tmp,1,BUFSIZE,dest); fclose(dest); } return 0; }
-----------------------------Tam aradığım şeydi çok teşekkür ederim.Şu an deneme fırsatım yok fakat yaziyi yazip programı kapattıktan sonra bu exeyi farkli bir bilgisayara atsam orda bana yazdığım yazının çıktısını vermekte problem yaşamaz değil mi ?
-
OnLyGoDCaNStoPMe bunu yazdı:
-----------------------------
Tam aradığım şeydi çok teşekkür ederim.Şu an deneme fırsatım yok fakat yaziyi yazip programı kapattıktan sonra bu exeyi farkli bir bilgisayara atsam orda bana yazdığım yazının çıktısını vermekte problem yaşamaz değil mi ?
-----------------------------problem olmaz, çıkan exe nin üreten ile ilgisi yok. derleyici yoksa exe ile deneyebilirsin.
http://www.sendspace.com/file/1sk1vc
-
Tugberk bunu yazdı:
-----------------------------
OnLyGoDCaNStoPMe bunu yazdı:
-----------------------------
Tam aradığım şeydi çok teşekkür ederim.Şu an deneme fırsatım yok fakat yaziyi yazip programı kapattıktan sonra bu exeyi farkli bir bilgisayara atsam orda bana yazdığım yazının çıktısını vermekte problem yaşamaz değil mi ?
-----------------------------problem olmaz, çıkan exe nin üreten ile ilgisi yok. derleyici yoksa exe ile deneyebilirsin.
http://www.sendspace.com/file/1sk1vc
-----------------------------Çok sağol hocam hiçbir sorun çıkmadı.