Bu rehber yalnızca eğitim amaçlıdır.
Hedef uygulamamızı başlatalım. Rehberde bir Google yetkilendirme penceresinin URL'sini alacağım. Uygulama üzerinden mevcut URL hakkında bir bilgi alınamıyor, bunu da belirteyim.
Uygulamanın PID (İşlem Kimliği) değerini almalısınız. Bu kimliğe, program ile ilgili işlemler yapmak için ihtiyacımız var.
Bu komut ile yürütülebilirin PID değerini bulun. Her zaman 2 çıktı verecektir, çünkü bu aramayı yaparken sağladığınız arama terimiyle çalışan programı da gösterir. Hedef programın PID'ini not alın.
Öncelikle uygulamanın yürütülmesini durdurun. Bu adım zorunlu değil, ama özellikle de elle yani yavaş yavaş ilerleyeceğimiz için tablomuzun da sabit kalması iyi olur.
Uygulamanın yürütme işlemini duraksatmak için -STOP emri gönderin.
Artık uygulamamız yanıt vermiyor statüsüne geçecek. Etkileşime girmeye çalışmayın, girdileriniz büyük ihtimalle program yürütülmeye devam edildiğinde sırasıyla işlenecektir.
Uygulamanın bellek haritası /proc/<PID>/maps dosyasında bulunur. Bu dosya, birçok içerik içerse de bize genellikle en çok lazım olan kısmı heap bölümü. Amacınıza göre diğer kısımları da kullanabilirsiniz tabii. Heap bölümünün offset değerini alalım.
Aşağıdaki gibi bir çıktı alacaksınız. Kırmızı işaretli konumları not alın.
Şimdi bellek yolunu da kullanarak bakalım içinde ne varmış. İki şekilde bellekte gezinebiliriz. İlki, less ile ekrana yazdırmak. Basitçe bütün heap içeriğini ekrana yığar ve ok tuşları ile gezinebiliriz.
Çıkmak için q tuşunu kullanın.
Kitapçık için h tuşunu kullanın.
Arama yapmak için /TERİM komutunu kullanın.
Diğer bir yol da aradığımızı bildiğimiz şeyi bulmak. Bunun için less yerine grep ile arama yapacağız. Sonuç bulundukça ekrana düşecek.
Örnek çıktı olarak bana lazım olan Google yetki sayfası URL'sini alacağım.
Çıktısı şu şekilde:
Uygulamanın belleğinden bir veri aldınız. Farklı uygulamalarda farklı şekillerde deneyebilirsiniz. Unutmadan, programın yürütme işlemini devam ettirmek için
Hedef uygulamamızı başlatalım. Rehberde bir Google yetkilendirme penceresinin URL'sini alacağım. Uygulama üzerinden mevcut URL hakkında bir bilgi alınamıyor, bunu da belirteyim.
Uygulamanın PID (İşlem Kimliği) değerini almalısınız. Bu kimliğe, program ile ilgili işlemler yapmak için ihtiyacımız var.
Bash:
ps -ef | grep -Ei "<Yürütülebilirin adı, parametresi veya konumu. Herhangi bir şey.>"
root@technopat.net:/www/sosyal# ps -ef | grep "signon-ui"
user 1777 956 1 23:10 ? 00:00:05 /usr/bin/signon-ui -b
root 3960 3240 0 23:15 pts/4 00:00:00 grep --color=auto signon-ui <<< Bu program, bizim arama yaparken çalıştırdığımız program. Görmezden gelin.
root@technopat.net:/www/sosyal#
Öncelikle uygulamanın yürütülmesini durdurun. Bu adım zorunlu değil, ama özellikle de elle yani yavaş yavaş ilerleyeceğimiz için tablomuzun da sabit kalması iyi olur.
Uygulamanın yürütme işlemini duraksatmak için -STOP emri gönderin.
Kod:
kill -STOP <PID>
Artık uygulamamız yanıt vermiyor statüsüne geçecek. Etkileşime girmeye çalışmayın, girdileriniz büyük ihtimalle program yürütülmeye devam edildiğinde sırasıyla işlenecektir.
Uygulamanın bellek haritası /proc/<PID>/maps dosyasında bulunur. Bu dosya, birçok içerik içerse de bize genellikle en çok lazım olan kısmı heap bölümü. Amacınıza göre diğer kısımları da kullanabilirsiniz tabii. Heap bölümünün offset değerini alalım.
Kod:
cat /proc/<PID>/maps | grep heap
root@technopat.net:/www/sosyal# cat /proc/1777/maps | grep heap
55867aa8f000-55867bbe5000 rw-p 00000000 00:00 0 [heap]
^^^^^^^^^^^^^^ - ^^^^^^^^^^^^^ = Bitiş noktası
^^^^^^^^^^^^^^ = Başlangıç noktası
Şimdi bellek yolunu da kullanarak bakalım içinde ne varmış. İki şekilde bellekte gezinebiliriz. İlki, less ile ekrana yazdırmak. Basitçe bütün heap içeriğini ekrana yığar ve ok tuşları ile gezinebiliriz.
Bash:
dd if=/proc/<PID>/mem bs=1 skip=$((0x<BAŞLANGIÇ NOKTASI>)) count=$((0x<BİTİŞ NOKTASI> - 0x<BAŞLANGIÇ NOTKASI>)) status=none | strings | less
Kitapçık için h tuşunu kullanın.
Arama yapmak için /TERİM komutunu kullanın.
Diğer bir yol da aradığımızı bildiğimiz şeyi bulmak. Bunun için less yerine grep ile arama yapacağız. Sonuç bulundukça ekrana düşecek.
Bash:
dd if=/proc/<PID>/mem bs=1 skip=$((0x<BAŞLANGIÇ NOKTASI>)) count=$((0x<BİTİŞ NOKTASI> - 0x<BAŞLANGIÇ NOTKASI>)) status=none | strings | grep "<TERİM>"
Örnek çıktı olarak bana lazım olan Google yetki sayfası URL'sini alacağım.
Bash:
dd if=/proc/<PID>/mem bs=1 skip=$((0x55867aa8f000)) count=$((0x55867bbe5000-0x55867aa8f000)) status=none | strings | grep "https://accounts.google.com/o/oauth2"
Çıktısı şu şekilde:
root@technopat.net:/www/sosyal# dd if=/proc/1777/mem bs=1 skip=$((0x55867aa8f000)) count=$((0x55867bbe5000-0x55867aa
8f000)) status=none | strings | grep "https://accounts.google.com/o/oauth2"
https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force&client_id=sayılar-pkp
gizlenmiş_önemli_anahtarlar.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%2Foauth2callback&
state=sayılar&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email
Uygulamanın belleğinden bir veri aldınız. Farklı uygulamalarda farklı şekillerde deneyebilirsiniz. Unutmadan, programın yürütme işlemini devam ettirmek için
kill -CONT <PID>
komutunu kullanın.