Tik Tok iOS al revés

Hay muchos artículos sobre WeChat inverso en Internet, pero hay relativamente pocos artículos sobre Tik Tok. La razón principal es que durante el proceso de análisis inverso de Hopper, la mayoría de ellas son direcciones de llamadas a funciones y se desconocen las líneas del método específico. Después de investigar durante varios días, tengo que compartirlo con ustedes detenidamente.

Requisitos inversos: implementar la función de comentarios y simular comentarios de diferentes usuarios.

Entorno de desarrollo: Tik Tok IPA (awe me. app), Xcode (instalar MonkeyDev), Hopper (analizar archivos ejecutables) y exportar todos los archivos de encabezado de Tik Tok.

1》¿Ejecutar MonkeyDev, verificar la jerarquía de Tik Tok y encontrar primero el controlador anotado? AWECommentListViewController

Busque el archivo de encabezado para ver qué propiedades útiles hay. respuestaComentario: Este puede ser el modelo que se genera al responder a un comentario. Modelo:, ListManager: Posiblemente lógica para manejar comentarios. - (_ bool) userptappedsendwithcontent: (ID) arg 1 vista de entrada: (ID) arg 2: haga clic para enviar comentario. Este debería ser el método clave. No dudes en publicar uno.

Este método es desarrollado por. AWECommentListInputView? Esta vista se llama. Supongo que esta vista debería ser la vista del cuadro de entrada de texto, y el controlador de comentarios implementa el método proxy de esta vista: (_ bool) la vista de entrada de comentarios debería devolver: (ID) arg 1. Controlador de anotaciones - (_ bool) userptappedsendwithcontent: (ID) arg 1 vista de entrada: (ID) arg 2 El método se llama en el método proxy, por lo que, en teoría, podemos llamar a este método manualmente y enviar la anotación.

2 gt Agregue un botón en el controlador de anotaciones y establezca el evento de clic del botón en - (_ bool) userptappedsendwithcontent: (ID) arg 1 vista de entrada: (ID) arg 2 para verificar si el la anotación es exitosa.

Los comentarios de verificación se pueden enviar correctamente,

3 gt continúa rastreando las llamadas al método para ver qué clase envió la solicitud de comentario. Necesitamos saber qué parámetros se deben cargar y la ruta de solicitud. Abra Hopper para encontrar un gran avance, busque awesomelistviewcontroller usertappedsEndwithContent, encuentre tres métodos sospechosos y haga clic para realizar un seguimiento.

Para implementar estos tres métodos, alcance los puntos de interrupción y ejecute Xcode individualmente. Al enviar un comentario, ingresará el método -sendcommentcontent y verá un mensaje útil.

¿Haz clic en este método para encontrar un sabor familiar? AWECommentListManager, al que pertenece este método.

¿Todavía recuerdas el listManager al principio del artículo? Me sorprendió que la llamada al controlador fuera [self.listManager? comentarioConContenido:? ID de respuesta:? respuestaSubCommentID:? respuestaSubCommentAuthorID:? Información adicional:? referirCadena:? Complete: ], continúe por el sendero y finalmente siga hasta (void)commentaweitemwithid: (void *) arg 2 content: (void *) arg 3 respuestacommentid: (void *) arg 4 respuestasubcommentid: (void *) arg 5 extra información: (nulo *). arg 6 pegatina: (void *) arg 7 cadena de referencia: (void *) arg 8 finalización: (void *) arg 9 Después de este método, no hay forma de seguirlo, así que cambié de opinión y veré si funciona; listManager Llame a otros métodos. Mi método es romper todos los métodos internos. Llegué al método correspondiente a _cmd y vi el diccionario entrante. Awesome_id es la identificación del comentario, que es el Tik Tok que estás leyendo actualmente. El texto es el contenido de mi comentario y "/awe me/v 1/comment/publish/" es el envío.

Durante la depuración, descubrí que después de enviar la solicitud de anotación, se enviará otra transacción.

Vi un latido de palabra clave. Cuando lo configuro en este punto de interrupción veo que la anotación fallará. Este debería ser algún mecanismo de Tik Tok. Si este paquete de latidos es incorrecto, su comentario no será válido.

4》Ideas: (1). Debe conocer la información del usuario, como ID de usuario, apodo y ruta de avatar para poder distinguir quién envió el comentario y encontrar este código de versión "/webcast/room/live_room_id/? = 9. 2. 0& pass area = 0& pass route=0 ampjs_sdk_version=1.43.0.1 ampwebcast_sdk_version=1330 ampapp_name=aweme ampvid=019c3dd 5-08d 3-49b 6-AF5B-939154 b6b 148 amp;app_version=9.2.0 language=zh-hans-US device_id=40613784883 canal=pp amp. MCC_MNC =46011 amp; ayuda = 1128. ancho de pantalla = 414 amp; openudid = 02a 6db 71a7ae 780 f 226 b 95032 b 116da 6852 f 13e 8 amp; 12. 4. 6 amperios; webcast = zh-Hans _ CN dispositivo plataforma = iphoneampbuild_number = 92013.iid = 110910203440.

tipo_dispositivo = iPhone 206 20 plus amp; idfa = 25d 32 f6d-CBC 3-42e 9-9A7C-2d 72277497d 4", ? es un parámetro de solicitud POST, awe_ID = 6812025407865425166; ID de canal = 0 amptext = E4 BD A0 E8 AF B4 E7 9A 84 E5 AF B9, estos tres, luego tenemos que ver si hay alguna información que necesitemos en el encabezado de la solicitud, solo compare el parámetro IID = 110910203440

5》Ver comentarios. haga clic en la página de inicio personal para ver cuál es el formato del ID de usuario; continuará...