开发者社区> 韩曙亮> 正文

【Android 逆向】Android 逆向通用工具开发 ( PC 端工程分析 | 网络初始化操作 | PC 端工程核心业务逻辑 )

简介: 【Android 逆向】Android 逆向通用工具开发 ( PC 端工程分析 | 网络初始化操作 | PC 端工程核心业务逻辑 )
+关注继续查看

文章目录

前言

一、网络初始化操作

二、PC 端工程核心业务逻辑

三、博客资源

前言

本篇博客重点分析 PC 端 hacktool 模块 ;






一、网络初始化操作


HackCommand::Prepare() 方法主要是进行网络初始化操作 ;


在 HackCommand::Prepare() 方法 中 调用了 【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | SOCKET 网络套接字初始化 | 读取远程端 “Android 模拟器“ 信息 | 向远程端写出数据 ) 一、SOCKET 网络套接字初始化 博客章节介绍的 CNetwork::WaitClientOnline() 方法 , 进行网络初始化操作 ;


bool HackCommand::Prepare()
{
    std::cout << "正在连接客户端..." << std::endl;
    if (m_network.WaitClientOnline()) {
  std::cout << "连接成功\n";
  return true;
    }
    std::cout << "连接失败:" << m_network.GetErrorString() << std::endl;
    return false;
}





二、PC 端工程核心业务逻辑


HackCommand::Run() 方法是核心的业务逻辑 , 这是一个循环执行的函数体 ;


执行 HackCommand::Run() 方法后 , 初始化相关变量 ,




然后直接进入一个 do{}while() 循环 , 每次循环时都先显示提示信息 :


 /* 网络初始化完毕 , 开始执行之后 , 先展示命令信息 , 提示用户如何操作 */

/* 网络初始化完毕 , 开始执行之后 , 先展示命令信息 , 提示用户如何操作 */
  ShowInfo();

 

对应的命令行输出方法如下 :


void HackCommand::ShowInfo()
{
    std::cout << "请选择命令:" << std::endl;
    std::cout << "1 读取数据" << std::endl;
    std::cout << "2 写入金币" << std::endl;
    std::cout << "3 写入经验" << std::endl;
    std::cout << "4 退出程序" << std::endl;
}


然后等待用户输入 1 , 2, 3, 4 中的一个字符 ,


/* 等待用户输入 */
  std::cin >> cmd;


根据用户输入的字符 , 判定用户的操作意图 , 这些都定义在枚举中 , 如果需要增加其它命令 , 直接增加该枚举变量值即可 ;


/* 如果需要增加其它命令 , 直接增加该枚举变量值即可 */
enum {
    CMD_READ_DATA = 1,
    CMD_WRITE_GOLD,
    CMD_WRITE_EXP
};


完整代码 :


void HackCommand::Run()
{
    bool iscontinue = true;
    int cmd = 0;
    int exp = 0;
    double gold = 0.0;
    Json::Value root;
    do {
  /* 网络初始化完毕 , 开始执行之后 , 先展示命令信息 , 提示用户如何操作 */
  ShowInfo();
  /* 等待用户输入 */
  std::cin >> cmd;
  /* 判定用户输入的字符串 */
  switch (cmd) {
  case CMD_READ_DATA:  // 1 读取数据
    std::cout << "获取到的数据为:" << std::endl;
    if (m_network.ReadData(root)) {
    std::cout << "金币:" << (int)root["playerMoney"].asDouble() << std::endl;
    std::cout << "经验:" << root["playerExpPoints"].asUInt() << std::endl;
    }
    break;
  case CMD_WRITE_GOLD:  // 2 写入金币
    std::cout << "请输入金币值:" << std::endl;
    /* 用户补充输入金币信息 */
    std::cin >> gold;
    m_network.WriteGold(gold);
    break;
  case CMD_WRITE_EXP:  // 3 写入经验
    std::cout << "请输入经验值:" << std::endl;
    /* 用户补充输入经验值信息 */
    std::cin >> exp;
    m_network.WriteExp(exp);
    break;
  case 4:       // 4 退出程序
    iscontinue = false;
    break;
  }
    } while (iscontinue);
}


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android核心服务解析篇(二)——Android源码结构分析(二)
Android核心服务解析篇(二)——Android源码结构分析(二)
54 0
Android核心服务解析篇(二)——Android源码结构分析(一)
Android核心服务解析篇(二)——Android源码结构分析(一)
171 0
Android核心服务解析篇(一)——下载Android源代码
Android核心服务解析篇(一)——下载Android源代码
68 0
Android核心服务解析篇(三)——Android系统的启动(二)
Android核心服务解析篇(三)——Android系统的启动(二)
94 0
Android核心服务解析篇(三)——Android系统的启动(一)
Android核心服务解析篇(三)——Android系统的启动(一)
132 0
【Android 逆向】Android 逆向通用工具开发 ( 静态库项目中的网络操作核心类 CNetwork 分析 )
【Android 逆向】Android 逆向通用工具开发 ( 静态库项目中的网络操作核心类 CNetwork 分析 )
62 0
【Android 逆向】Android 逆向通用工具开发 ( PC 端工具 hacktool 启动 main 函数分析 | hacktool 工程中的核心类 HackCommand 分析 )
【Android 逆向】Android 逆向通用工具开发 ( PC 端工具 hacktool 启动 main 函数分析 | hacktool 工程中的核心类 HackCommand 分析 )
101 0
【Android 逆向】Android 逆向通用工具开发 ( Android 端远程命令工具 | Android 端可执行程序的 main 函数操作 | TCP 协议服务器建立 | 接收客户端数据 )
【Android 逆向】Android 逆向通用工具开发 ( Android 端远程命令工具 | Android 端可执行程序的 main 函数操作 | TCP 协议服务器建立 | 接收客户端数据 )
75 0
面试查缺补漏,android核心知识:组件篇
  前言   最近一段瞎xx百度,无意中发现一个帖,看帖子的质量肯定是被转载不知道多少次了,来出处都已经不见了,但是博主的质量比较的高。甚至把这篇文章的内容当做面试前的查缺补漏也是非常合适的。   总之是一篇质量非常给常高的文章。所以忍不住在这里发了出来。如果原作者看到这篇文章,觉得不妥。私聊我就会删掉。   一、应用组件
65 0
+关注
韩曙亮
专注 Android 领域
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Android组件化实现
立即下载
蚂蚁聚宝Android秒级编译—— Freeline
立即下载
Android开发之多进程架构
立即下载