Tekrar hoş geldiniz.
Bu derste, JZ kullanarak basit bir döngüye göz atacağız.
Bu durumda, sıfırı -'ye taşırız, üçü -'ye taşırız ve sonra -'yi -'ye ekleriz.
Bu yüzden üç artı sıfırı alıyoruz ve sonucu -'de saklıyoruz.
Yani - şimdi üç oldu.
Sonra bir eksiltiriz.
Yani - iki oluyor.
Daha sonra - değerinin sıfır olup olmadığını test ederiz.
Eğer - sıfır değilse,
bu atlama gerçekleşmeyecektir.
Düz gidecek ve buraya geri atlayacak.
Buraya geri döndüğünde, tekrar ekleyecektir.
Dolayısıyla, buradaki son değerde ne varsa ikiye eklemeye devam edecektir.
Yani - şimdi ikidir, bu yüzden ona iki ekleyecek ve -'yi azaltacaktır. - şimdi bir oluyor.
Sıfır olup olmadığını test eder.
Hayır. Eğer - sıfır değilse, düz gider ve buraya atlar ve şimdi bunu tekrar -'ye ekler.
Sonra - değerini azaltır. - şimdi sıfır olur.
Şimdi - değerinin sıfır olup olmadığını test eder. Evet, - şimdi sıfır.
Böylece dışarı fırlayacak ve buraya gelecek.
Yani bu programın etkisi bir artı iki artı üç sayılarını hesaplamaktır.
Yaptığı şey bu.
Şimdi bunu x64dbg ile deneyelim, böylece daha net bir anlayışa, daha net bir görüşe sahip oluruz.
Öyleyse yeniden başlamak için şablonu bir
kez daha açalım.
Ve talimatlarımızı burada tutuyoruz.
Burada, ilk komut move - zero, move - zero, sonra move - three, ve sonra add - -, ve sonra decrement -, ve sonra dışarıdaki bu adrese
atlamak, böylece burada uzakta bir yerde bir adres seçebiliriz, belki bu, ve sadece
kopyalayabiliriz.
Sonra buraya geri gelin ve JZ komutunu yerleştirin,
ardından burada boşluk bırakın, adres burada çok aşağıda.
Bunu yaptıktan sonra, JZ'nin JE olarak değiştiğini fark edeceğiz. Sorun değil çünkü JE, JZ
ile aynı.
Tamam.
Bir sonraki JMP olacak, zirveye geri dönün.
Üstte ne demek?
Bu talimata atlayın, - - ekleyin anlamına gelir. Bu yüzden önce bu adresi kopyalıyoruz, adresi kopyalıyoruz, buraya geri geliyoruz
ve buraya bir JMP koyuyoruz, adresi yapıştırıyoruz, tamam'a tıklıyoruz.
Tamam.
Şimdi her şeyi doğru yazdığınızdan emin olmak için bir dakikanızı ayırın.
Yani temelde döngü bu.
Bu şey, buradaki koşul doğru olana kadar döngüde kalmaya devam edecek ve döngüden çıkacaktır.
Bir kesme noktası koyalım ve şimdi atlayıp çalıştıralım.
Ve şimdi kırılma noktamıza ulaştık.
Hadi geçelim.
Şimdi sıfırı -'ye taşıyacaktır.
- şimdi sıfırdır.
Üçten -'ye hareket edecek.
- Şimdi üç oldu.
Yani - bir sayaçtır çünkü döngüden çıkıp çıkmayacağını belirlemek için bunu kullanır.
Yani bu -'ye - ekleyecek.
Yani - şimdi üç oldu çünkü - üçtür.
- sıfırdır.
Üç artı sıfır üç eder.
Bu yüzden burada üç tane var.
Şimdi -'yi bir azaltın.
Yani - üç.
Bunu aşarsak iki olur.
Şimdi bu - değerinin sıfır olup olmadığını test edin.
Sıfır değil.
Sıfır ise, sıfır bayrağı bir olarak ayarlanacaktır.
Ama bu durumda değil,
bu yüzden bu şey zıplamayacak.
Düz gidecek.
Ve şimdi koşulsuz bir şekilde en üste geri atlayacak ve döngüyü tekrarlayacak.
Böylece tekrar üste atlıyoruz ve şimdi bir döngümüz var.
Yani şimdi -'ye - ekleyecek.
- Şimdi iki oldu. İki artı üç beş eder.
Yani - şimdi beş oldu.
Sonra sayacı tekrar azaltır.
Şimdi - bir olacak.
Şimdi tekrar karşılaştırıyoruz.
Sıfır mı?
Hayır, sıfır değil, o
yüzden atlamayın.
Düz git.
Bu koşulsuz bir atlayıştır,
bu yüzden geri dönün ve burada bir döngü daha yapın.
Bu sefer bir tane ekleyecek.
Eğer - bir ise, -'ye bir ekleyecektir, böylece altı olacaktır.
Yani - şimdi altı olur ve sonra tekrar - azaltırız.
Yani - şimdi sıfır oluyor.
Şimdi test edilecek, sıfır mı?
Bu durumda, evet, öyle.
Gördüğünüz gibi, sıfır bayrağı birdir, 1.
Bu yüzden doğru olduğu için, döngüden aşağıya doğru atlayacaktır.
Buraya gel.
Tamam.
Yani döngünün dışındayız.
JE komutu olarak da bilinen JZ komutunu basit bir döngü yapmak için bu şekilde kullanabiliriz.
Pekala, bunu kaydedelim. Yama, ve
buna 33- JZ-loop nokta
E-X-E diyelim.
Tamam.
Evet.
Tamam, bu video için hepsi bu kadar.
Bir sonrakinde görüşürüz.