26 Eyl 2017 Moderatör #1 `XMaze^^ X #Ri Coder Katılım 17 Ocak 2016 Mesajlar 1,111 Çözümler 2 Tepki puanı 2,542 Ödüller 12 Yaş 9 10 HİZMET YILI C++ Assembly Memory Edit (Beğenmeden geçenlerin çükü kopsun. Dökümanı kendim yazdım tozlanmak üzere buraya bırakıyorum.) - (1) 1 Byte Yazma (Byte Patch) Kod: DWORD ADRES = 0x0000000; _asm{ mov ecx,ADRES // Ecx registerine ADRES'i atıyoruz (moving pointer to ecx register) mov byte ptr[ecx],0xF6 // F6 Bytesini Ecx registerine yazıyoruz (Patching F6 byte to ecx) } - (2) 2 Byte Yazma (WORD Patch) [TR] *Burda dikkat edilcek bi konu var 2 ve 4 byte yazdırdığımız zaman x86 assembly kurallarına göre byteleri tersten yazmamız gerekir örneğin; 0x12345678 adresine 75 05 opcodesini yazdırmak için 0575h şeklinde ters olarak yazmamız gerekiyor. *kural*("h" harfi 2,4,8 byte yazdırdığımız zaman opcodenin sonuna konulur, başına "0x" koyamazsınız.) [EN] (*Important : We need write bytes reverse like on sample, because in x86 assembly it's an rule) (Sample : We need write bytes reverse like "0575h" for write "7505" opcode to pointer.) *rule*("h" is needed for 2,4,8 byte patch you cant use "0x" type) Kod: DWORD ADRES = 0x0000000; _asm{ mov ecx,ADRES // Ecx registerine ADRES'i atıyoruz (moving pointer to ecx register) mov word ptr[ecx],0575h // 75 05 bytesini Ecx registerine yazıyoruz (Patching "75 05" to ecx with reversed type) } - (3) 3 Byte Yazma (3 Byte Patch) [TR] *3 Byte yazdırmak istediğimizde F6 C4 41 opcodesini 41C4F6h şeklinde yazamayız bu yüzden daha farklı bi mantıkla yazıcaz. [EN] *(If we want patch 3 bytes, we cant use "41C4F6h" for "F6 C4 41" 's patch, we have another method ). Kod: DWORD ADRES = 0x0000000; _asm{ mov ecx,ADRES // Ecx registerine ADRES'i atıyoruz (moving pointer to ecx register) mov byte ptr[ecx],0xF6 //F6 bytemizi adresimize yazdırdık (Patched first byte) mov byte ptr[ecx+1],0xC4 //C4 bytemizi F6 dan hemen sonrasına yazdık (Patched second byte after F6) mov byte ptr[ecx+2],0x41 //burdada 41 bytesini son olarak yazdık ve tamamladık (And last byte patched after C4) } - (4) 4 Byte Yazma (DWORD patch) [TR] *4 Byte yazdırmak istediğimizde 2 byte yazdırdığımız gibi aynı şekilde op codemizi tersten yazarak hafızaya yerleştircez. [EN] *(If we want patch 4 Byte (DWORD) we will write like 2byte (WORD) patch .) Kod: DWORD ADRES = 0x0000000; _asm{ mov ecx,ADRES // Ecx registerine ADRES'i atıyoruz (moving pointer to ecx register) mov dword ptr[ecx],3FE66666h // 66 66 E6 3F opcodesini tersten yazarak dword ile adresimize işliyoruz (We writed opcode reversed and well done :)) }
C++ Assembly Memory Edit (Beğenmeden geçenlerin çükü kopsun. Dökümanı kendim yazdım tozlanmak üzere buraya bırakıyorum.) - (1) 1 Byte Yazma (Byte Patch) Kod: DWORD ADRES = 0x0000000; _asm{ mov ecx,ADRES // Ecx registerine ADRES'i atıyoruz (moving pointer to ecx register) mov byte ptr[ecx],0xF6 // F6 Bytesini Ecx registerine yazıyoruz (Patching F6 byte to ecx) } - (2) 2 Byte Yazma (WORD Patch) [TR] *Burda dikkat edilcek bi konu var 2 ve 4 byte yazdırdığımız zaman x86 assembly kurallarına göre byteleri tersten yazmamız gerekir örneğin; 0x12345678 adresine 75 05 opcodesini yazdırmak için 0575h şeklinde ters olarak yazmamız gerekiyor. *kural*("h" harfi 2,4,8 byte yazdırdığımız zaman opcodenin sonuna konulur, başına "0x" koyamazsınız.) [EN] (*Important : We need write bytes reverse like on sample, because in x86 assembly it's an rule) (Sample : We need write bytes reverse like "0575h" for write "7505" opcode to pointer.) *rule*("h" is needed for 2,4,8 byte patch you cant use "0x" type) Kod: DWORD ADRES = 0x0000000; _asm{ mov ecx,ADRES // Ecx registerine ADRES'i atıyoruz (moving pointer to ecx register) mov word ptr[ecx],0575h // 75 05 bytesini Ecx registerine yazıyoruz (Patching "75 05" to ecx with reversed type) } - (3) 3 Byte Yazma (3 Byte Patch) [TR] *3 Byte yazdırmak istediğimizde F6 C4 41 opcodesini 41C4F6h şeklinde yazamayız bu yüzden daha farklı bi mantıkla yazıcaz. [EN] *(If we want patch 3 bytes, we cant use "41C4F6h" for "F6 C4 41" 's patch, we have another method ). Kod: DWORD ADRES = 0x0000000; _asm{ mov ecx,ADRES // Ecx registerine ADRES'i atıyoruz (moving pointer to ecx register) mov byte ptr[ecx],0xF6 //F6 bytemizi adresimize yazdırdık (Patched first byte) mov byte ptr[ecx+1],0xC4 //C4 bytemizi F6 dan hemen sonrasına yazdık (Patched second byte after F6) mov byte ptr[ecx+2],0x41 //burdada 41 bytesini son olarak yazdık ve tamamladık (And last byte patched after C4) } - (4) 4 Byte Yazma (DWORD patch) [TR] *4 Byte yazdırmak istediğimizde 2 byte yazdırdığımız gibi aynı şekilde op codemizi tersten yazarak hafızaya yerleştircez. [EN] *(If we want patch 4 Byte (DWORD) we will write like 2byte (WORD) patch .) Kod: DWORD ADRES = 0x0000000; _asm{ mov ecx,ADRES // Ecx registerine ADRES'i atıyoruz (moving pointer to ecx register) mov dword ptr[ecx],3FE66666h // 66 66 E6 3F opcodesini tersten yazarak dword ile adresimize işliyoruz (We writed opcode reversed and well done :)) }
26 Eyl 2017 Moderatör #2 LeftSpace aka panic.rs Kurucu Katılım 18 Haz 2015 Mesajlar 3,379 Çözümler 50 Tepki puanı 13,156 Ödüller 22 Sosyal 10 HİZMET YILI inline assembly cnm
26 Eyl 2017 Konuyu başlatan Moderatör #3 `XMaze^^ X #Ri Coder Katılım 17 Ocak 2016 Mesajlar 1,111 Çözümler 2 Tepki puanı 2,542 Ödüller 12 Yaş 9 10 HİZMET YILI LeftSpace' Alıntı: inline assembly cnm Genişletmek için tıklayın ... naked demedik ztn cnm
23 Ağu 2018 #4 HeroBaby36 Seçkin Üye Katılım 1 May 2018 Mesajlar 444 Tepki puanı 121 Ödüller 7 8 HİZMET YILI Vbnet için nasıl oluyor abi bu
23 Ağu 2018 #5 #Roaccat Ey yüce yaradan bana fantastik bir hayat yaşattın. Emektar Üye Katılım 2 Ocak 2016 Mesajlar 4,595 Çözümler 1,842 Tepki puanı 2,297 Ödüller 18 10 HİZMET YILI eyvallah hocam yararlı konu tr en olması cabası
23 Ağu 2018 #6 ⚝1LLUM1NAT1⚝ ⚝ Onaylı Üye Katılım 31 Tem 2018 Mesajlar 95 Tepki puanı 3 Yaş 30 7 HİZMET YILI sağolun hocam