Skip to content

Unknown-60/Unknown-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

87 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Unknown-Client

  • Copyright ©️ 2014-2021 Unknown-60

Acerca de

Unknown Client es un proyecto iniciado en 2014 con el fin de enviar de manera automática y programable una secuencia de mensajes establecidas por el usuario.

Lado lógico

  • En versiónes 1.3 o anteriores.
  • En versiónes 3.8 y superiores.

Método

Versión antigua

  • Aplicación tercera.

Versíones nuevas

  • Inyección de código arbitrario.

Comportamiento

Versiónes antiguas

Se usa la función de superposición para buscar el id del botón y pulsar de manera simultanea en él

Versiónes nuevas

Se usa el método Share de Whatsapp para usar la función de re-enviar, permitiendo enviar mensajes simultáneos de forma más precisa rápida.

Requisitos

  • WhatsApp Mod / Base.
  • Conocimientos básicos Dalvik Byte Code >> smali.
  • Conocimientos XML.
  • Apktool o algúna herramienta para descompilar.

Yo usé apktool bajo GNU/Linux, pero sirve para cualquier otro descompilador de cualquier otra plataforma (Siempre y cuando las versiones de aaptz y los bins estén actualizados.)

Preparación

Decompilar el APK, incluyendo resources.arsc y los archivos dex.

Descargar el código de este repositorio y extraer los archivos.

Ir a la carpeta "Definición/res/layout", abrir el archivo "conversation.xml" y copiar las sentencias.

Ir al WhatsApp descompilado, entrar en la carpeta "res/layout", abrir el archivo "conversation.xml" con algún editor de código y buscar el TextView con el id "date_divider_header" (<com.whatsapp.WaTextView) dirigirse a a la posición en dónde se cierra etiqueta y poner debajo;

<ImageButton
	android:gravity="center|top"
	android:layout_gravity="center|top"
	android:id="@+id/send_bom_text"
	android:layout_width="39dp"
	android:layout_height="39dp"
	android:layout_marginRight="2.0dip"
	android:src="@drawable/ic_unknown_client"
	android:scaleType="centerCrop"
	android:background="@layout/bom_fab"
	android:padding="2dp"
	android:layout_weight="0" />


Ir a la carpeta "Definición/res/layout-v17", abrir el archivo "conversation.xml" y copiar las sentencias.

Ir al WhatsApp descompilado, entrar en la carpeta "res/layout-v17", abrir el archivo "conversation.xml" con algún editor de código y buscar el TextView con el id "date_divider_header" (<com.whatsapp.WaTextView) dirigirse a a la posición en dónde se cierra etiqueta y poner debajo;

<ImageButton
	android:gravity="center|top"
	android:layout_gravity="center|top"
	android:id="@+id/send_bom_text"
	android:layout_width="39dp"
	android:layout_height="39dp"
	android:layout_marginRight="2.0dip"
	android:src="@drawable/ic_unknown_client"
	android:scaleType="centerCrop"
	android:background="@layout/bom_fab"
	android:padding="2dp"
	android:layout_weight="0" />


Ir a la carpeta "Definición/res/layout-v21", abrir el archivo "conversation.xml" y copiar las sentencias.

Ir al WhatsApp descompilado, entrar en la carpeta "res/layout-v21", abrir el archivo "conversation.xml" con algún editor de código y buscar el TextView con el id "date_divider_header" (<com.whatsapp.WaTextView) dirigirse a a la posición en dónde se cierra etiqueta y poner debajo;

<ImageButton
	android:gravity="center|top"
	android:layout_gravity="center|top"
	android:id="@+id/send_bom_text"
	android:layout_width="39dp"
	android:layout_height="39dp"
	android:layout_marginRight="2.0dip"
	android:src="@drawable/ic_unknown_client"
	android:scaleType="centerCrop"
	android:background="@layout/bom_fab"
	android:padding="2dp"
	android:layout_weight="0" />


Ir a la carpeta "Definición/res/values", abrir el archivo "ids.xml" y copiar las sentencias.

Ir al WhatsApp descompilado, entrar en la carpeta "res/values", abrir el archivo "ids.xml" con algún editor de código y definir el id de esta forma

<item type="id" name="send_bom_text">false</item>

Ir a la carpeta "Definición/smali/com/whatsapp", abrir el archivo "conversation.smali" con algún editor de código y copiar el contenido.

Ir al WhatsApp descompilado, entrar en la carpeta "Definición/smali/com/whatsapp", abrir el archivo "conversation.smali" con algún editor de código.

Dirigirse al método contructor (en # direct methods) y buscar el cierre del método, evidentemente

  return-void
.end method

E inyectar el código debajo

.method public namiAutoText(Landroid/view/View;)V
   .registers 14
   .annotation system Ldalvik/annotation/Signature;
      value = {
         "(",
         "Landroid/view/View;",
         ")V"
      }
   .end annotation

   .prologue
   .line 119
   move-object v0, p0

   move-object v1, p1

   move-object v7, v0

   invoke-virtual {v7}, Lcom/whatsapp/Conversation;->getApplicationContext()Landroid/content/Context;

   move-result-object v7

   invoke-static {v7}, Landroid/preference/PreferenceManager;->getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences;

   move-result-object v7

   move-object v3, v7

   .line 122
   move-object v7, v0

   move-object v8, v0

   invoke-virtual {v8}, Lcom/whatsapp/Conversation;->getApplicationContext()Landroid/content/Context;

   move-result-object v8

   invoke-virtual {v8}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;

   move-result-object v8

   const-string v9, "entry"

   const-string v10, "id"

   move-object v11, v0

   invoke-virtual {v11}, Lcom/whatsapp/Conversation;->getApplicationContext()Landroid/content/Context;

   move-result-object v11

   invoke-virtual {v11}, Landroid/content/Context;->getPackageName()Ljava/lang/String;

   move-result-object v11

   invoke-virtual {v8, v9, v10, v11}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I

   move-result v8

   invoke-virtual {v7, v8}, Lcom/whatsapp/Conversation;->findViewById(I)Landroid/view/View;

   move-result-object v7

   check-cast v7, Landroid/widget/EditText;

   move-object v4, v7

   .line 123
   move-object v7, v4

   move-object v8, v3

   const-string v9, "nami_boom_text"

   const-string v10, "Unknown-Client"

   invoke-interface {v8, v9, v10}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

   move-result-object v8

   invoke-virtual {v7, v8}, Landroid/widget/EditText;->setText(Ljava/lang/CharSequence;)V

   .line 126
   move-object v7, v0

   move-object v8, v0

   invoke-virtual {v8}, Lcom/whatsapp/Conversation;->getApplicationContext()Landroid/content/Context;

   move-result-object v8

   invoke-virtual {v8}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;

   move-result-object v8

   const-string v9, "send"

   const-string v10, "id"

   move-object v11, v0

   invoke-virtual {v11}, Lcom/whatsapp/Conversation;->getApplicationContext()Landroid/content/Context;

   move-result-object v11

   invoke-virtual {v11}, Landroid/content/Context;->getPackageName()Ljava/lang/String;

   move-result-object v11

   invoke-virtual {v8, v9, v10, v11}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I

   move-result v8

   invoke-virtual {v7, v8}, Lcom/whatsapp/Conversation;->findViewById(I)Landroid/view/View;

   move-result-object v7

   check-cast v7, Landroid/widget/ImageView;

   move-object v5, v7

   .line 127
   move-object v7, v5

   invoke-virtual {v7}, Landroid/widget/ImageView;->performClick()Z

   move-result v7

   return-void
.end method

.method public namiBoomCount()I
   .registers 9

   .prologue
   .line 113
   move-object v0, p0

   move-object v5, v0

   invoke-virtual {v5}, Lcom/whatsapp/Conversation;->getApplicationContext()Landroid/content/Context;

   move-result-object v5

   invoke-static {v5}, Landroid/preference/PreferenceManager;->getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences;

   move-result-object v5

   move-object v2, v5

   .line 114
   move-object v5, v2

   const-string v6, "nami_boom_count"

   const-string v7, "1000"

   invoke-interface {v5, v6, v7}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

   move-result-object v5

   check-cast v5, Ljava/lang/String;

   invoke-static {v5}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I

   move-result v5

   move v3, v5

   .line 115
   move v5, v3

   move v0, v5

   return v0
.end method

.method public namiBoomStart()V
   .registers 12
   .annotation system Ldalvik/annotation/Signature;
      value = {
         "()V"
      }
   .end annotation

   .prologue
   .line 99
   move-object v0, p0

   move-object v6, v0

   invoke-virtual {v6}, Lcom/whatsapp/Conversation;->getApplicationContext()Landroid/content/Context;

   move-result-object v6

   invoke-static {v6}, Landroid/preference/PreferenceManager;->getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences;

   move-result-object v6

   move-object v2, v6

   .line 102
   move-object v6, v0

   move-object v7, v0

   invoke-virtual {v7}, Lcom/whatsapp/Conversation;->getApplicationContext()Landroid/content/Context;

   move-result-object v7

   invoke-virtual {v7}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;

   move-result-object v7

   const-string v8, "entry"

   const-string v9, "id"

   move-object v10, v0

   invoke-virtual {v10}, Lcom/whatsapp/Conversation;->getApplicationContext()Landroid/content/Context;

   move-result-object v10

   invoke-virtual {v10}, Landroid/content/Context;->getPackageName()Ljava/lang/String;

   move-result-object v10

   invoke-virtual {v7, v8, v9, v10}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I

   move-result v7

   invoke-virtual {v6, v7}, Lcom/whatsapp/Conversation;->findViewById(I)Landroid/view/View;

   move-result-object v6

   check-cast v6, Landroid/widget/EditText;

   move-object v3, v6

   .line 103
   move-object v6, v3

   move-object v7, v2

   const-string v8, "nami_boom_text"

   const-string v9, "Unknown-Client"

   invoke-interface {v7, v8, v9}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

   move-result-object v7

   invoke-virtual {v6, v7}, Landroid/widget/EditText;->setText(Ljava/lang/CharSequence;)V

   .line 106
   move-object v6, v0

   move-object v7, v0

   invoke-virtual {v7}, Lcom/whatsapp/Conversation;->getApplicationContext()Landroid/content/Context;

   move-result-object v7

   invoke-virtual {v7}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;

   move-result-object v7

   const-string v8, "send"

   const-string v9, "id"

   move-object v10, v0

   invoke-virtual {v10}, Lcom/whatsapp/Conversation;->getApplicationContext()Landroid/content/Context;

   move-result-object v10

   invoke-virtual {v10}, Landroid/content/Context;->getPackageName()Ljava/lang/String;

   move-result-object v10

   invoke-virtual {v7, v8, v9, v10}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I

   move-result v7

   invoke-virtual {v6, v7}, Lcom/whatsapp/Conversation;->findViewById(I)Landroid/view/View;

   move-result-object v6

   check-cast v6, Landroid/widget/ImageView;

   move-object v4, v6

   .line 107
   move-object v6, v4

   invoke-virtual {v6}, Landroid/widget/ImageView;->performClick()Z

   move-result v6

   return-void
.end method

.method public namiBoomText(Landroid/view/View;)V
   .registers 13
   .annotation system Ldalvik/annotation/Signature;
      value = {
         "(",
         "Landroid/view/View;",
         ")V"
      }
   .end annotation

   .prologue
   .line 65
   move-object v0, p0

   move-object v1, p1

   new-instance v5, Lnami/boomtext/BoomTextDialog;

   move-object v10, v5

   move-object v5, v10

   move-object v6, v10

   move-object v7, v0

   invoke-direct {v6, v7}, Lnami/boomtext/BoomTextDialog;-><init>(Landroid/content/Context;)V

   move-object v3, v5

   .line 66
   move-object v5, v3

   const-string v6, "ATACAR"

   new-instance v7, Lcom/whatsapp/Conversation$BoomStart;

   move-object v10, v7

   move-object v7, v10

   move-object v8, v10

   move-object v9, v0

   invoke-direct {v8, v9}, Lcom/whatsapp/Conversation$BoomStart;-><init>(Lcom/whatsapp/Conversation;)V

   invoke-virtual {v5, v6, v7}, Lnami/boomtext/BoomTextDialog;->setPositiveButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;

   move-result-object v5

   const-string v6, "CANCELAR"

   new-instance v7, Lcom/whatsapp/Conversation$BoomCancel;

   move-object v10, v7

   move-object v7, v10

   move-object v8, v10

   move-object v9, v0

   invoke-direct {v8, v9}, Lcom/whatsapp/Conversation$BoomCancel;-><init>(Lcom/whatsapp/Conversation;)V

   invoke-virtual {v5, v6, v7}, Landroid/app/AlertDialog$Builder;->setNegativeButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;

   move-result-object v5

   .line 76
   move-object v5, v3

   invoke-virtual {v5}, Lnami/boomtext/BoomTextDialog;->show()Landroid/app/AlertDialog;

   move-result-object v5

   return-void
.end method

.method public namiBoomTextStart()V
   .registers 11
   .annotation system Ldalvik/annotation/Signature;
      value = {
         "()V"
      }
   .end annotation

   .prologue
   .line 80
   move-object v0, p0

   new-instance v5, Landroid/os/Handler;

   move-object v9, v5

   move-object v5, v9

   move-object v6, v9

   invoke-direct {v6}, Landroid/os/Handler;-><init>()V

   move-object v2, v5

   .line 81
   new-instance v5, Lcom/whatsapp/Conversation$BoomText;

   move-object v9, v5

   move-object v5, v9

   move-object v6, v9

   move-object v7, v0

   move-object v8, v2

   invoke-direct {v6, v7, v8}, Lcom/whatsapp/Conversation$BoomText;-><init>(Lcom/whatsapp/Conversation;Landroid/os/Handler;)V

   move-object v3, v5

   .line 93
   move-object v5, v2

   move-object v6, v3

   invoke-virtual {v5, v6}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z

   move-result v5

   return-void
.end method

ir a la carpeta donde se encuentra el código de Unknown Client, dirigirse a "byteCode/Inyección/res", copiar todo el contenido.

Volver al WhatsApp descompilado y pegar todo los ficheros en la carpeta res.

volver a la carpeta donde se encuentra el código de Unknown Client, dirigirse a "byteCode/Inyección/smali", copiar la carpeta "com".

Volver al WhatsApp descompilado y pegarla en la carpeta smali.

Esto puede variar, ya que depende del WhatsApp que estés intentando modificar, algúnos guardan las clases en "smali_classes2", "smali_classes3", "smali_classes4", "smali_classes4", "smali_classes5", etc.

Para identificar la ruta solo hay que usar un poco el cerebro, buscar y pegarlo en la carpeta "smali_classesX" que contenga el archivo. "Lcom/whatsapp/Conversation.smali"

Preparación

Compilarlo por tu cuenta

No hay mucho que explicar.

Abrir Android Studio, crear un nuevo proyecto con el paquete "com.whatsapp".

Ir a la carpeta de Unknown-Client/src, copiar todo el contenido de "res" y pegarlo en tu proyecto.

Copiar todas las clases de la carpeta "java" en la carpeta "java" de tu proyecto.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published