【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | SOCKET 网络套接字初始化 | 读取远程端 “Android 模拟器“ 信息 | 向远程端写出数据 )
生活随笔
收集整理的这篇文章主要介绍了
【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | SOCKET 网络套接字初始化 | 读取远程端 “Android 模拟器“ 信息 | 向远程端写出数据 )
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
文章目录
- 前言
- 一、SOCKET 网络套接字初始化
- 二、SOCKET 网络套接 读取远程端 ( Android 模拟器 ) 信息
- 三、SOCKET 网络套接 向远程端 ( Android 模拟器 ) 写出数据
前言
本篇博客重点分析 CNetwork 网络模块 ;
一、SOCKET 网络套接字初始化
在 CNetwork::CNetwork() 构造函数中 , 初始化套接字 , 初始化时设置 无效套接字 INVALID_SOCKET ;
CNetwork::CNetwork() {// 初始化套接字 , 初始化时设置 无效套接字 INVALID_SOCKETm_server = INVALID_SOCKET; }在初次连接时 , 判断当前套接字是否是无效的 ,
- 如果当前套接字是无效的 , 则初始化网络 , 建立网络连接 ;
- 如果当前套接字不是无效的 , 则关闭当前套接字 , 然后设置为无效套接字 ;
二、SOCKET 网络套接 读取远程端 ( Android 模拟器 ) 信息
从 Android 模拟器端获取数据 , 先准备发送的命令 , 将命令拼接成 json 字符串 ;
Json::Value cmd;cmd["cmd"] = CMD_READ_DATA;std::string s = cmd.toStyledString();通过 SOCKET 网络通信 , 将数据传递到 Android 模拟器端 ;
/* 通过网络通信 , 将数据传递到远程端 */int ret = send(m_server, s.c_str(), s.size(), 0);之后 , 调用 recv 方法 , 开始阻塞 , 等待远程端返回数据 , 如果接收数据出错 , 返回值小于 0 , 打印出错信息 ;
/* 阻塞 , 等待接收远程反馈信息 */char buffer[4096]="";ret = recv(m_server, buffer, sizeof buffer, 0);/* 如果接收失败 , 打印错误信息 */if (ret < 0) {printf("错误信息:%s\n", (LPCSTR)GetErrorString());return false;}接收到数据后 , 解析该数据 ;
/* 解析接收到的远程数据信息 */Json::Reader reader;if (reader.parse(buffer, root)) {printf("解析数据成功!\n");return true;}完整代码 :
/* 读取远程端 ( Android 模拟器 ) 信息 */ bool CNetwork::ReadData(Json::Value& root) {if (m_server == INVALID_SOCKET) {printf("客户端没有连接\n");return false;}Json::Value cmd;cmd["cmd"] = CMD_READ_DATA;std::string s = cmd.toStyledString();/* 通过网络通信 , 将数据传递到远程端 */int ret = send(m_server, s.c_str(), s.size(), 0);/* 发送完成后 , 进行错误判断 */if (ret < 0) {printf("错误信息:%s\n", (LPCSTR)GetErrorString());return false;}/* 阻塞 , 等待接收远程反馈信息 */char buffer[4096]="";ret = recv(m_server, buffer, sizeof buffer, 0);/* 如果接收失败 , 打印错误信息 */if (ret < 0) {printf("错误信息:%s\n", (LPCSTR)GetErrorString());return false;}/* 解析接收到的远程数据信息 */Json::Reader reader;if (reader.parse(buffer, root)) {printf("解析数据成功!\n");return true;}printf("解析数据失败:%s\n", buffer);return false; }三、SOCKET 网络套接 向远程端 ( Android 模拟器 ) 写出数据
写出数据比较简单 , 直接将要写出的数据拼接成 json 指令 , 然后直接发送到 Android 模拟器端即可 ;
完整代码实现 :
/* 向远程端 ( Android 模拟器 ) 写出数据 */ bool CNetwork::WriteGold(double gold) {if (m_server == INVALID_SOCKET) {printf("客户端没有连接\n");return false;}/* 拼接要发送的数据信息 */Json::Value root;root["cmd"] = CMD_WRITE_GOLD;root["data"] = gold;/* 将 json 数据转为字符串 */std::string s = root.toStyledString();/* 将转换的字符串发送到 Android 模拟器端 */int ret = send(m_server, s.c_str(), s.size(), 0);/* 如果发送出错 , 则打印报错信息 */if (ret < 0) {printf("错误信息:%s\n", (LPCSTR)GetErrorString());return false;}return true; }总结
以上是生活随笔为你收集整理的【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | SOCKET 网络套接字初始化 | 读取远程端 “Android 模拟器“ 信息 | 向远程端写出数据 )的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【Android 逆向】Android
- 下一篇: 【Android 逆向】Android