【Android 逆向】Android 逆向通用工具开发 ( PC 端工程分析 | 网络初始化操作 | PC 端工程核心业务逻辑 )
2023-09-14 09:07:29 时间
前言
本篇博客重点分析 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);
}
三、博客资源
源码地址 : https://download.csdn.net/download/han1202012/38479962
相关文章
- android+制作开机动画,Android 开机动画制作详解
- 基于chromium for android开发Android浏览器
- android 混淆规则作用,Android代码混淆详解
- mac 电脑android环境变量设置,mac上Android环境变量配置[通俗易懂]
- android activity singletask,Android Activity启动模式之singleTask实例详解
- android 获取收到短信验证码,Android自动获取短信验证码
- android 定时器重置,Android定时器延迟和重置[通俗易懂]
- android应用程序_chrome Android
- Android保存图片到相册(适配android 10以下及以上)
- Android studio更新后出现警告:Warning:The `android.dexOptions.incremental` property is deprecated and it has
- 从零开始用android studio
- 【错误记录】Android Studio 4.2.1 编译报错 ( Kotlin 版本推荐设置 1.5.0 )
- 【Android Gradle 插件】DataBindingOptions 配置 ( BaseExtension#dataBinding 脚配块配置 | DataBindingOptions 属性)
- 【Android Gradle 插件】TestOptions 配置 ③ ( TestOptions#unitTests 脚本块配置 | UnitTestOptions 配置简介 )
- 【Android Gradle 插件】自定义 Gradle 插件模块 ② ( 在模块中定义插件 | 引入自定义 Gradle 插件模块 | 配置 Gradle 插件上传选项 | 配置分组名称版本号 )
- Android控制文字水平间距android:letterSpacing详解手机开发
- Android开发中遇到的问题(三)——eclipse创建android项目无法正常预览布局文件详解手机开发
- 初识Android详解手机开发
- Android的三种主流资源尺寸详解手机开发
- android封装抓取网页信息的实例代码
- android教程viewpager自动循环和手动循环