当前位置: 首页 > news >正文

江门市网站建设公司emlog to wordpress

江门市网站建设公司,emlog to wordpress,saas系统是什么意思,it培训机构排名及学费目录 1.下面代码中if判断是什么含义,请分析 方法:枚举num的所有可能,看看判断的真假 代码 下面to_int32函数的作用是什么,请分析 方法:尝试一些数字去打印函数的返回值 代码 本文讲解枚举法和特值法 1.下面代码中if判断是什么含义,请分析 来自某修改器的逆向出的代码的…

目录

1.下面代码中if判断是什么含义,请分析

方法:枚举num的所有可能,看看判断的真假

代码

下面to_int32函数的作用是什么,请分析

方法:尝试一些数字去打印函数的返回值

代码


本文讲解枚举法和特值法

1.下面代码中if判断是什么含义,请分析

来自某修改器的逆向出的代码的一部分:

//num为unsigned int类型
if (num <= 12)
{if (((num - 8) & 0xFFFFFFFB) != 0){// do_something}
}

方法:枚举num的所有可能,看看判断的真假

枚举num的所有可能:循环

判断的真假的模版:

if ()
{printf("true");
}
else
{printf("false");
}

代码

因为num为unsigned int类型,因此从0枚举到12,打印每一种情况的真假

#include <stdio.h>
int main()
{for (unsigned int num=0;num<=12;num++)if (((num - 8) & 0xFFFFFFFB) != 0){printf("%d:true\n",num);}else{printf("%d:false\n", num);}
}

运行结果:

由运行结果可以看出:if判断等价为:

	if (num != 8 && num != 12){//do_something}

如果unsigned int类型的num没有规定范围,可以对所有值判断,代码如下

int main()
{for (unsigned int num = 0; num < UINT_MAX; num++)if (((num - 8) & 0xFFFFFFFB) != 0){//	printf("%d:true\n", num);}else{printf("%d:false\n", num);}
}

运行结果

下面to_int32函数的作用是什么,请分析

源代码片段来自https://github.com/pod32g/MD5/blob/master/md5.c 

摘自MD5算法的源文件的一部分:

uint32_t to_int32(const uint8_t* bytes)
{return (uint32_t)bytes[0]| ((uint32_t)bytes[1] << 8)| ((uint32_t)bytes[2] << 16)| ((uint32_t)bytes[3] << 24);
}

方法:尝试一些数字去打印函数的返回值

例如使用存有特定值的类型为uint8_t数组

代码

int main()
{uint8_t bytes[] = { 1, 2, 3, 4 };printf("%u",to_int32(bytes));
}

{ 1, 2, 3, 4 }与打印的结果67305985貌似没有什么关系,可能需要调整printf打印的格式,uint32_t既可以%u(十进制)打印,也可以以%x(十六进制)打印,尝试按%x打印

int main()
{uint8_t bytes[] = { 1, 2, 3, 4 };printf("%x",to_int32(bytes));
}

运行结果:

好像看出规律了,如下图所示:

可以推出to_int32函数的的等价写法如下,但没有原来的写法快

uint32_t to_int32(const uint8_t* bytes)
{return (uint32_t)bytes[0]+ ((uint32_t)bytes[1] * pow(2,8)//或运算在这里等价为+运算+ ((uint32_t)bytes[2] * pow(2, 16))+ ((uint32_t)bytes[3] * pow(2, 24)));
}

因此to_int32函数的作用:将一个类型为uint8_t的数组的四个元素转换为一个32位整数

http://www.dtcms.com/a/574736.html

相关文章:

  • 网站建设及优化方案苏州宿迁工业园区
  • 一键将指定文件夹内所有文件设置为只读/取消只读
  • linux: centos 软件包管理 yum源
  • 图像显示框架五——SurfaceFlinger的启动流程(基于Android 15源码分析)
  • 多线程之线程本地存储(Thread-Local Storage)
  • 基础数据结构之哈希表:两数之和(LeetCode 1 简单题)
  • 大公司网站建设建网站网站关键词书写步骤
  • 临沂网站建设优化网站开发业务规划
  • “移动政务”业务门户安全解决方案
  • 视频号网页版怎么发布视频优化网络的软件
  • 网站建设销售技巧和话术百度号码认证
  • 用什么软件快速做网站wordpress文章链接插件
  • 游戏网站建设杭州网站开发运营成本
  • 数字沙盘鹰眼导航电子沙盘:主副地图实时协同交互
  • 操作系统原理--进程线程
  • AI 空间细胞表型分析赋能肺癌诊疗:从 “看大小” 到 “看邻里”,精准分层风险
  • 个人网站开发的现状高德能看国外地图吗
  • 【StringJoiner 、StringBuilder、StringBuffer 功能解读】
  • 中国建设网站简州新城土地整改项目网站内容发布平台源码
  • 天津网站推广外包快看点自媒体平台注册入口和下载
  • 厦门专业做网站的wordpress插件国际化
  • 【pycharm 创建一个线程,在线程函数中增加的日志打印,日志打印了,但是打断点进不去】
  • Rust 练习册 5:Fn、FnMut 和 FnOnce trait
  • 哈尔滨cms模板建站wordpress 支持小工具
  • 上海公司查询网站网站改版 新闻
  • 电阻发热的底层逻辑
  • 虚拟机原理
  • 2003访问网站提示输入用户名密码wordpress右键插件
  • 营销网站建设的目的推广你公司网站
  • 如何建设音乐网站如何注册一个平台