Merhabalar bugün C++ dilinde bir DLL derleyip bunu projemize enjekte edeceğiz & fonksiyonlarını kullanacağız kısacası karışım yapacağız. İlk başta bir kaç gemi batırdık bu seyahatte gemimize @NMSHacking aracılık etti. Kendilerine ilgisi için teşekkür ediyorum buradan zat-ı şahanelerine yüksek takdirlerimi iletiyorum. Biz burada her iki dil ailesi için Visual Studio kullanacağız. Örnek projeyi size konu sonunda ileteceğim ki uğraşmak zorunda kalmayın.
İlk önce C++ dilinde Dynamic Link Library projemizin kodlarını inceleyelim;
Not: C++ üzerinde DLL derlerken projenizi sisteminizin kaç bit olduğuna göre ayarlayın benim 64 olduğu için 64 bit olarak derledim.
Not: C++ bilmediğim için en basit yolu gösterdim siz geliştirebilirsiniz. @NMSHacking ile DLL Injector kodlamayı denedik ama yapamadık. Burada değişkenleri yerine dosya yollarını yazarsınız artık nasıl yapılır bilmiyorum ama...
C++:
// dllmain.cpp : Defines the entry point for the DLL application.
#include "pch.h"
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
int Test(int Deger) {
return Deger * 5;
}
int mave(int y) {
return y - 50;
}
int Fonksiyon() {
return 9;
}
Burada 'fonksiyon' değer içerisine ne sayısı yazarsanız size onu veriyor. mave ise girdiğiniz değerden 50 çıkarıyor. Test ise girdiğiniz sayıyı 5 ile çarpıyor. Şimdi gelin bunu Visual Basic .NET & C# projemize enjekte edelim.
İlk başta proje başına ekleyeceğimiz kütüphanemiz;
Imports System.Runtime.InteropServicesusing System.Runtime.InteropServices;Class verisi altına gireceğimiz kod;
Kod:
Const Dosyayolu As String = "C:\ÖDEV\DLL\DLL_Olusturma_Net\Cpp DLL\x64\Debug\TestDLL.dll" 'dll dosyasının yolu
Kod:
const string Dosyayolu = @"C:\ÖDEV\DLL\DLL_Olusturma_Net\Cpp DLL\x64\Debug\TestDLL.dll" //dll dosyasının yolu";
Bu kod DLL dosyamızın yolunu belirtiyor. Şimdi fonksiyonlarını entegre edelim. Dikkat edin C++ koduna yazdığım fonksiyonlar ile aynı...
Kod:
<DllImport(Dosyayolu)> Public Shared Function Test(ByVal Deger As Integer) As Integer
End Function
<DllImport(Dosyayolu)> Public Shared Function mave(ByVal y As Integer) As Integer
End Function
<DllImport(Dosyayolu)> Public Shared Function Fonksiyon() As Integer
End Function
C#:
[DllImport(Dosyayolu)]
public static extern int Test(int Deger);
[DllImport(Dosyayolu)]
public static extern int mave(int y);
[DllImport(Dosyayolu)]
public static extern int Fonksiyon();
Şimdi işe yarayıp yaramadığını görmek için 3 adet buton koyalım & bir adet textbox ekleyelim. Bakalım çalışıyor mu?
Kod:
Private Sub Buton2_Click(sender As Object, e As EventArgs) Handles Fonks_Buton.Click
MsgBox(Fonksiyon)
End Sub
Private Sub Buton_Click(sender As Object, e As EventArgs) Handles Test_Buton.Click
MsgBox(Test(CInt(TextBox1.Text)))
End Sub
Private Sub Buton1_Click(sender As Object, e As EventArgs) Handles Button1.Click
MsgBox(mave(CInt(TextBox1.Text)))
End Sub
C#:
private void Buton2_Click(object sender, EventArgs e)
{
MessageBox.Show(Fonksiyon().ToString());
}
private void Buton_Click(object sender, EventArgs e)
{
MessageBox.Show(Test(Convert.ToInt32(TextBox1.Text)).ToString());
}
private void Buton1_Click(object sender, EventArgs e)
{
MessageBox.Show(mave(Convert.ToInt32(TextBox1.Text)).ToString());
}
Ve okunan değerlerimiz işlemimiz bu kadar. Sağlıcakla kalın...
C++ Projesi ;
Son düzenleme:





