May 27, 2013

Merhaba Zekeriya,

Biz main() içinde şu işlevi parametre vermeden doğal yollardan ve assembly kümesi içinde çağırmışız. Peki nasıl derlenecek?

void xx(int a, int b, string x){
   writeln(x, a+b);
}

Başarılar...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

May 27, 2013

Neyin derleneceğini sorduğunuzu anlayamadım ama o kodların tamamı çok rahat derlenebiliyor. Önceki başlıkta çalıştırılacak olan fonsiyonu GetProcAddress ile runtime çağırabiliyoruz ama parametrelerini bilmiyoruz compile time tanımlamak gerekiyor ama bu uyguladığım yapı sayesinde runtime esnada parametreleri tanımlayarak çağırabilmeye imkan tanıyoruz mesela;

dll = dll.load("Kernel32.dll)"
SizeofResource = dll.define("DWORD","SizeofResource","ptr","ptr")
SizeofResource(HModule, HRSRC) // bu 2 değişken de önceden tanımlanıyor.

Buradaki olay şu dll yüklemesi yapılıyor daha sonra SizeofResource değişkenine dll fonksiyonu aldığı parametre türleri belirtilerek yerleştiriliyor ve istenilen yerde SizeofResource fonksiyonu o paramtreler belirtilerek çağırılıyor.

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

May 27, 2013

Sanırım Salih main'in ikinci satırındaki xx() çağrısının derlenemediğini söylüyor.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

May 28, 2013

Hocam şu an tek çözülmesi gereken şey şu;

   85:
   86: 	auto adres = &talha;
0040222C B8 CC 21 40 00       mov         eax,4021CCh
00402231 89 45 EC             mov         dword ptr [adres],eax
   87: 	asm{
   88: //		push adres;
   89: //		mov ECX,
   90: 	}
   91:
   92: 	integral(&talha);
00402234 50                   push        eax
   87: 	asm{
   88: //		push adres;
   89: //		mov ECX,
   90: 	}
   91:
   92: 	integral(&talha);
00402235 8B 0D 00 C1 42 00    mov         ecx,dword ptr ds:[42C100h]
0040223B 64 8B 15 2C 00 00 00 mov         edx,dword ptr fs:[2Ch]
00402242 8B 1C 8A             mov         ebx,dword ptr [edx+ecx*4]
00402245 FF 93 1C 00 00 00    call        dword ptr [ebx+1Ch]
0040224B DD D8                fstp        st(0)

Buradaki asm kodlarını iasm üzerinden yazabilirsek eğer bu yeni sistemi uygulamak için hiçbir engel kalmaz inşallah :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

May 29, 2013

ASM boyutuna girmeden bu işlemleri hallettim. CSS de falan bu gibi işlemlere CSS Hack deniliyor. Sanırsam benim de bu işleme d hack dememde sakınca olmaz?

	void function() dllcall;

Olarak tanımladım sonra da

	auto adres = &talha;
	asm{
		mov EAX, adres;
		push EAX;
	}
	dllcall();
	float x;
	asm{
		fstp dword ptr [x];
	}

Yaptım aslında fonksiyonun return değeri de var parametreleri de var ama ben yokmuş gibi çağırdım :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

May 29, 2013

Alıntı (zekeriyadurmus):

>

ASM boyutuna girmeden bu işlemleri hallettim. CSS de falan bu gibi işlemlere CSS Hack deniliyor. Sanırsam benim de bu işleme d hack dememde sakınca olmaz?

> 	void function() dllcall;
> ```

> Olarak tanımladım sonra da
>
>

auto adres = &talha;
asm{
mov EAX, adres;
push EAX;
}
dllcall();
float x;
asm{
fstp dword ptr [x];
}

>

Yaptım aslında fonksiyonun return değeri de var parametreleri de var ama ben yokmuş gibi çağırdım :)

Zekeriya

Nasıl yani?

Şimdi burada ki talha nesnesi nedir? Ayrıca neden adresini yığına gönderiyoruz? Tamam bir sebebi olmalı ama peki işlev çağrıldıktan sonra yaptığımı assembly komutuyla aldığımız değer işlevin yığına döndürdüğü (return) değeri mi?

DLL derleme komutları ile birlikte "full set sample" kodları alabilir miyiz?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

1 2
Next ›   Last »