.NET ile inline ASM yazabilmenin dayanılmaz hafifliği (VB / C#)
Okuyucu : 1.697
Günlük Okuyucu : 1,6
Devin Jenson's WebLog' ynda Dynamically Writing and Executing Native Assembly in C# başlığı altında harika bir iş yapılmış, .NET altında direk ASM kullanılarak kod çalıştırılmış. Bu bildiğimiz gibi C/C++ gerektiğinde rahatlıkla kullanabildiğimiz bir şey ancak managed kodda bunu yapmak çok keyifli.
Bunun yapılabildğini bilmiyordum, bende kodun VB.NET versiyonunu yazdım;
.NET Framework 2 gerekiyor;
Private Delegate Function _MyAdd(ByVal x As Integer, ByVal y As Integer) As Integer
Sub Main()
'A simple Add function
Dim myAddNativeCodeBytes As Byte() = { _
&H8B, &H44, &H24, &H8, _
&H8B, &H4C, &H24, &H4, _
&H3, &HC1, _
&HC2, &H8, &H0 _
}'We need to push the code bytes into a native buffer
Dim myAddNativeCodeBytesPtr As IntPtr = IntPtr.Zero'Allocate the native buffer
myAddNativeCodeBytesPtr = Marshal.AllocCoTaskMem(myAddNativeCodeBytes.Length)'Push the code bytes over
Marshal.Copy(myAddNativeCodeBytes, 0, myAddNativeCodeBytesPtr, myAddNativeCodeBytes.Length)Dim MyAdd As _MyAdd
MyAdd = CType(Marshal.GetDelegateForFunctionPointer(myAddNativeCodeBytesPtr, GetType(_MyAdd)), _MyAdd)Console.WriteLine(MyAdd(10, 20))
End Sub

Yorumlar
Aşağıdaki form aracılığı ile yorumlarınızı ve fikirlerinizi gönderebilirsiniz. Henüz bu konu hakkında bir yorum yazılmamış.
Yorum Ekle
Diğer Yazılar
.NET ile Object Pool
.NET Kaynak Kodlarını Download Etme
.NET Kodunu Dokümante Etme
.NET Multithreading
.NET Platformunda yazılım geliştririken VB.NET mi C# mı?
.NET Request Filtering Bypass Vulnerability
.NET Search String Accuracy
.NET URI ve Nokta Bug' ı
.NET, MultiThreading ve Basit bir ThreadPool Implementasyonu
.NETIDS
[CVE-2007-1355] Tomcat documentation XSS vulnerabilities
’05 in ardından Ferruh Mavituna
0.17 saniyede devrialem yaptım
0day Açık Artırma Sitesi
0day Tracker
1 Hafta Off
1 Saatlik Popstar Terapisi
1.200.000 dosyayı kopyalamak
10 Yazılımcı Yalanı, Kod Okuma, Commentlar
Neredeyim ?
Ferruh.Mavituna » Haberler » .NET ile inline ASM yazabilmenin dayanılmaz hafifliği (VB / C#)