【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | 配置头文件 | 配置编译参数 | 网络初始化 WSAStartup 与清理 WSACleanup 操作 )

简介: 【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | 配置头文件 | 配置编译参数 | 网络初始化 WSAStartup 与清理 WSACleanup 操作 )

文章目录

前言

一、开发前的配置 ( 头文件 | 编译参数设置 )

二、网络初始化 WSAStartup 与清理 WSACleanup 操作

前言

本篇博客重点分析 CNetwork 网络模块 ;






一、开发前的配置 ( 头文件 | 编译参数设置 )


Windows 中引入网络套接字头文件注意事项 : 必须先引入 WinSock2.h 头文件 , 然后 再引入 Windows.h 头文件 , 否则会报错 ;


#include <WinSock2.h> // WinSock2.h 头文件 必须在 Windows.h 头文件前面
#include <Windows.h> // Windows.h 头文件 必须在 WinSock2.h 头文件后面


使用代码 记录 编译参数选项 :


#pragma warning(disable:4996)
#pragma comment(lib,"Ws2_32.lib")


格式风格宏定义 :


#define FORMAT_STYLE (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS)






二、网络初始化 WSAStartup 与清理 WSACleanup 操作


在 CNetwork 中 , 定义了一个 WSAPrepare 私有类 ,


在 Windows 中调用网络功能 , 必须执行 WSAStartup 初始化函数 , 否则无法使用网络功能 ; 使用完毕后 , 一定要执行 WSACleanup 函数 , 否则之后的网络操作都会受到影响 ;


上述初始化网络 , 清理网络 操作 , 在使用前初始化 , 使用完毕后清理 ;


使用过程中 , 会创建多个 CNetwork 对象 , 只需要在第一个对象创建前初始化 , 最后一个对象析构后清理即可 ;


没有必要在每个对象中都 执行 网络的初始化 与 清理操作 ; 因此 WSAPrepare 变量被定义成私有静态变量 ;


在 CNetwork.cpp 中声明了 CNetwork::WSAPrepare CNetwork::wsaforwin; , 确保网络一定会被初始化 , 初始化和析构时 , 不影响网络功能的使用 ;



CNetwork.h 源码 :


#pragma once
#include <WinSock2.h> // WinSock2.h 头文件 必须在 Windows.h 头文件前面
#include <Windows.h> // Windows.h 头文件 必须在 WinSock2.h 头文件后面
#include <SDKDDKVer.h>
#include <afxwin.h>
#include <stdio.h>
#include "../Json/json.h"
enum {
  CMD_READ_DATA = 1,
  CMD_WRITE_GOLD,
  CMD_WRITE_EXP
};
#pragma warning(disable:4996)
#pragma comment(lib,"Ws2_32.lib")
#define FORMAT_STYLE (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS)
class CNetwork
{
public:
  CNetwork();
  ~CNetwork();
  bool WaitClientOnline();//等待客户端上线
  bool ReadData(Json::Value& root);//读取数据
  bool WriteGold(double gold);//修改金币
  bool WriteExp(unsigned exp);//修改经验
public:
  static CString GetErrorString();
private:
  SOCKET m_server;
private:
  /* 该私有类的作用是用于整体的网络初始化
    在 Windows 中调用网络功能 , 必须执行 WSAStartup 初始化函数 , 否则无法使用网络功能
    使用完毕后 , 一定要执行 WSACleanup 函数 , 否则之后的网络操作都会受到影响
    上述初始化网络 , 清理网络 操作 , 在使用前初始化 , 使用完毕后清理 ; 
    使用过程中 , 会创建多个 CNetwork 对象 , 只需要在第一个对象创建前初始化 , 
    最后一个对象析构后清理即可 ; 
    没有必要在每个对象中都 执行 网络的初始化 与 清理操作 ; 
    因此 WSAPrepare 变量被定义成私有静态变量
       在 CNetwork 中声明了 CNetwork::WSAPrepare CNetwork::wsaforwin;
    确保网络一定会被初始化 , 初始化和析构时 , 不影响网络功能的使用
  */
  class WSAPrepare {
  public:
  WSAPrepare() {
    WSADATA data;
    memset(&data, 0, sizeof(data));
    int ret = WSAStartup(MAKEWORD(2, 2), &data);
    if (ret < 0) {
    printf("网络初始化失败:%s\n", (LPCSTR)CNetwork::GetErrorString());
    (void)getchar();
    abort();
    }
  }
  ~WSAPrepare() {
    if (WSACleanup() < 0) {
    printf("网络关闭失败:%s\n", (LPCSTR)CNetwork::GetErrorString());
    }
  }
  };
  /* 私有静态成员变量 , 所有的 CNetwork 对象都共享同一个变量 */
  static WSAPrepare wsaforwin;
};




目录
相关文章
|
7天前
|
监控 数据可视化 Java
VMware Aria Operations for Networks 6.14 - 网络和应用监控工具
VMware Aria Operations for Networks 6.14 - 网络和应用监控工具
24 0
VMware Aria Operations for Networks 6.14 - 网络和应用监控工具
|
27天前
|
运维 监控 Linux
网络延迟监测工具选择(第一篇)
**WGCLOUD**是一款开源免费的跨平台运维监控工具,支持Windows、Linux、MacOS等系统,具备网络延迟监测功能。其内置的**PING监测**模块可实时ping目标IP,图形化展示延迟趋势,并在目标IP不可达时发送告警通知。支持分组管理,操作简单便捷,适合运维人员高效监控网络状态。
|
1月前
|
安全 Java Android开发
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
76 0
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
|
4月前
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
773 76
|
3月前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
104 7
|
5月前
|
安全 Android开发 iOS开发
escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
escrcpy 是一款基于 Scrcpy 的开源项目,使用 Electron 构建,提供图形化界面来显示和控制 Android 设备。它支持 USB 和 Wi-Fi 连接,帧率可达 30-120fps,延迟低至 35-70ms,启动迅速且画质清晰。escrcpy 拥有丰富的功能,包括自动化任务、多设备管理、反向网络共享、批量操作等,无需注册账号或广告干扰。适用于游戏直播、办公协作和教育演示等多种场景,是一款轻量级、高性能的 Android 控制工具。
259 1
|
自然语言处理 Android开发 存储
Android的init过程(二):初始化语言(init.rc)解析
Android的init过程(一) 本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10     在上一篇文章中介绍了init的初始化第一阶段,也就是处理各种属性。
968 0