¿Cómo escribió tgalal una API de WhatsApp (Yowsup) sin tener ningún documento o especificaciones? Además, ¿por qué WhatsApp no ​​puede / no puede controlar eso?

Escribiendo la aplicación

El principio es realmente muy simple, ya que sigues los mismos pasos que un bebé da para entender cómo hablan sus padres. Escuchas, observas lo que sucede, intentan replicar lo que escuchaste, esperando obtener la misma reacción.

Por ejemplo, un bebé podría inferir a su alrededor que “quiere pasta” le dará a alguien pasta y “quiere pizza” le dará pizza. Pueden comenzar con “querer pizza”, verificar que obtuvieron pizza, luego continuar con “querer chocolate” y ver si viene chocolate. Si es así, sí, el bebé ahora sabe que acaba de dominar el comando WANT de la API indocumentada de sus padres.

Para una aplicación móvil, el principio es el mismo, hace que la aplicación funcione en un entorno monitoreado (por ejemplo, solo se comunica a través de WiFi local, o trabajando en un emulador …), lo trabajas de manera muy limitada e intentas descifrar qué es enviando.

Si ve una conexión TCP en algún puerto 80 con “GET / user / foobar / newsfeed HTTP / 1.1 \ nHost: www.superduperapp.com”, bueno, jackpot. Dependiendo de la aplicación, es posible que deba superar el cifrado, algún formato binario personalizado, etc.

Cuando cree que comprende algún comando, intenta operarlo con su propio código y reza para que haga lo que pretendía.

Controlando

Bueno, no hay forma de saber quién está en el otro extremo de una conexión IP. Si su código usa algún esquema inteligente, ese esquema se puede aplicar ingeniería inversa. Si su código usa criptografía, las claves deben estar presentes en el cliente que distribuye, por lo que otra persona puede recuperarlas y usarlas.

Puede hacer que sea un poco más difícil para los ingenieros inversos, nunca frustrarlos por completo.