5.26~5.27

news2024/7/4 5:00:24

https://blog.csdn.net/m0_72827793/article/details/130478513
接着之前的内容

32bit.exe为何运行不了?

第一个问题当我运行32bbit.exe
那是因为我编译出的程序时64位的程序
在这里插入图片描述
64位程序和32位程序,在编译的时候,具有差异,在32位下,指针是4 字节的,在64位下,指针是8字节的
也就是说,所有32位定义的,pdword,pbyte,pvoid 等等,带有Pxxx的类型,都会发生变化,结构体所拿到的东西也就变了。
所以编译成32位的程序,问题就解决了
在这里插入图片描述

下面程序的参数个数和意义分别是什么?

在这里插入图片描述

这两个参数
argc是命令执行的个数,第二个是windows运行的入口
主函数main中变量(int argc,char *argv[ ])的含义:
argc用来统计你运行程序时送给main函数的命令行参数的个数。
argv[ ]: 字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数.
argv[0] 指向程序运行的全路径名
argv[1] 指向在DOS命令行中执行程序名后的第一个字符串
argv[2] 指向执行程序名后的第二个字符串

argv[argc]为NULL。
原文链接:https://blog.csdn.net/xyw_blog/article/details/15686961

在这里插入图片描述
上面这个代码,判断是不是两个命令
例如:
在这里插入图片描述
master1.exe 是1
64bit.exe 是2
但在数组里是0、1
所以这个程序的参数应该是2个,一个是它本身,另一个是需要加载的EXE

下面函数具体做了什么操作?

在这里插入图片描述

将二进制文件读入内存中
在这里插入图片描述

下面这段代码有什么用?

在这里插入图片描述这段代码是先加载NTDLL。dll 模块,然后去里面找到 函数NtUnmapViewOfSection 的函数指针,最后调用这个函数
调用了NtUnmapViewOfSection函数,去卸载了(LPVOID)ntHeader->OptionalHeader.ImageBase这个地址所对应的内存模块
把这个地址所对应的内存模块从当前进程中卸载掉,为后续的EXE重新映射到内存做铺垫

现在有个问题,如果,这个地址是当前进程中,在用的地址范围,这个卸载操作会不会引擎进程崩溃?

任何正在使用的地址空间强制卸载,都会发生崩溃
正在使用的内存地址空间突然不可访问后,CPU就会往上抛异常,告诉操作系统,最后操作系统就终止了当前进程的运行

下面这个if检查什么

在这里插入图片描述
!pImageBase == 1 且 !relocDir == 1
即pImageBase==0且relocDir ==0时执行

下面这段代码是干什么的?

在这里插入图片描述

把读入的二进制文件复制到刚才拷贝的pImageBase中
单步调试看一下窗口
在这里插入图片描述
DOS 头,NT头 拷贝过来

下面这段代码是干啥的?

在这里插入图片描述
VA保存方式,相对于内存镜像基址pImageBas
VA是在内存中用地址,PointerToRawData 这个是相对于文件偏移的地址
既然是重新映射,那就得符合内存布局规律,所以地址也得是按照相对image 首地址去计算

下面这个函数是干什么?

在这里插入图片描述
一些内存分配,和字串的拷贝,函数有命令行获取
根据cmdline复制出两份,一份Unicode一份Ansi的cmdline
hijackCmdline = true; 这个是一个,HOOK,函数的标记
置为true ,后续是要设置IATHook 的

对于HOOK怎么理解?

把系统的函数调用流程劫持到我们的函数内
动态获取,程序内部的函数参数,之后再在hook函数内部调用真正的api函数
得到的调用参数
比如,动态观察程序内部的运行情况,如果钩了文件函数,就可以知道这个程序动态跑的时候,操作过什么文件、
钩了网络函数,后者内存函数,对应的操作细节,你就能知道了
像打日志一样,按先后都打印出来,这个不就是程序分析报告么
而且HOOK函数,可以劫持参数留作它用,也可以阻断这个函数调用流程,如果有有害参数,可以直接结束此次函数调用,直接返回,而不是调用真正的函数
记得一点,HOOK 操作,可以劫持函数调用流程,可以加上我们的操作,截留信息等等
最典型的例子,就是你打开一个病毒文件,装了杀毒软件的系统,就会告诉你这个文件打开失败,是因为杀软在底层劫持文件打开流程,提前检查了这个文件,所以在底层拒绝了这次打开操作

最后再想一下,如果我们想获取文件打开信息,需要hook哪个函数?

后续。。。。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/575747.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt_C++读写M1IC卡源码支持windows国产linux操作系统

Android Linux RFID读写器NFC发卡器WEB可编程NDEF文本/智能海报/-淘宝网 (taobao.com) IC卡的特性 1、分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位; 2、每个扇区有独立的一组密码及访问控制; 3、每张卡有唯一序列号…

HACK ME PLEASE: 1实战演练

文章目录 HACK ME PLEASE: 1实战演练一、前期准备1、相关信息 二、信息收集1、访问网站2、端口扫描2、扫描目录3、访问网站4、访问网站5、扫描目录6、访问网站7、登录MySQL数据库8、查看数据表9、查看users表的内容10、查看tblUsers表内容11、解密12、加密13、修改密码14、查询…

CentOS7.6(Linux)环境下有网和无网安装Docker

1、 服务器有网环境 1.1、手动卸载旧版本 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine1.2、安装yum-utils sudo yum install -y yum-utils \device-mapper-per…

项目并行管理指南:如何做好多项目管理?

多项目并行已经是大部分企业的现状,多项目并行同时进行已然是大部分企业的现状,同时管理多个项目是一件具有挑战性的,但是有一些方法和工具可以帮助我峨嵋你有条理地实施项目,提高效率,降低工作压力。 一,设…

【C++系列P4】模板搞不懂?脑阔抖三抖!!精讲一篇过!

前言 大家好吖,欢迎来到 YY 滴 C系列 ,热烈欢迎!本章主要内容面向接触过C的老铁,主要内容含 目录 一.模板 1.函数模板 一.函数模板概念 二.函数模板的格式 三.函数模板的实例化 1.隐式实例化 2.显式实例化 3.模板参数的…

多模态应用展望——看图聊天、BLIP2

看图聊天 BLIP2 是 salesforce 公司开源的多模态模型,其大致的原理,可以类比看图写作,当前 AI 在文生图模式之外,也支持图生文模式,可以将照片中的核心元素识别出来。然后把这些元素作为上下文,交给 ChatG…

MYSQL 8 中间字段有NULL 值,还是无法走索引,所以我高估了MYSQL 的查询智商

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

并查集(算法)

目录 一、并查集的概念二、并查集的使用合并集合连通块中点的数量食物链带权并查集扩展域并查集 一、并查集的概念 最裸并查集: 将两个集合合并。 询问两个元素是否在一个集合当中 ,近乎 O ( 1 ) O(1) O(1) 时间内支持两个操作 基本原理&#xff1a…

chatgpt赋能python:Python文件大小:如何优化和管理您的文件大小

Python 文件大小:如何优化和管理您的文件大小 Python 是世界上最流行的编程语言之一,被广泛用于各种不同的应用程序。但是,随着项目变得越来越复杂,并且在需要处理大量数据的情况下,文件大小经常成为一个问题。因此&a…

数据包伪造、替换、劫持,https劫持之探索和测试

(一)数据包替换攻击 该攻击过程如下:伪造服务器响应客户端的数据包。监听客户端的数据包,用预先伪造的数据包,伪装成服务器返回的数据发送给客户端。 因为攻击者跟目标在同一个局域网,所以攻击者发送的数…

算法27:最长公共子序列——样本模型(4)

目录 简介 题目: 思路: 递归版本: 根据递归 分析推导 动态规划版本: 简介 前面刷了几道题目,都是从暴力递归到递归动态规划的版本,最后演变成纯动态规划的版本。接下来的题目,将会跳过 递…

chatgpt赋能python:Python找出列表中出现最多的元素

Python找出列表中出现最多的元素 介绍 在Python的编程过程中,经常需要处理列表,而处理列表时最常见的问题之一就是如何找出列表中出现最多的元素。在某些情况下,我们可能需要确定列表中重复出现最多的元素,并将其提取出来。Pyth…

[机器学习]线性回归

准备入门一下机器学习算法。 今天学习了线性回归,都是理论的东西,没有对于代码的实现,代码也会跟着进度好好搞一下。 对于线性回归的基础概念,我感觉很依靠概率论和线性代数两门课,作为刚准备完数学一考研的我&#xf…

Systrace系列12 —— CPU Info 解读

本文主要是对 Systrace 中的 CPU 信息区域(Kernel)进行简单介绍,简单介绍了如何在 Systrace 中查看 Kernel 模块输出的 CPU 相关的信息,了解 CPU 频率、调度、锁频、锁核相关的信息。 CPU 区域图例 下面是高通骁龙 845 手机 Systrace 对应的 Kernel 中的 CPU Info 区域(底下…

人工智能轨道交通行业周刊-第46期(2023.5.22-5.28)

本期关键词:数字孪生、AI铁路人、道岔、施封锁、图像质量评价、大模型小型化 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro轨道…

在VIVADO下烧写ZC706板载FLASH的操作步骤

1,原理图分析 首先看原理图,我们兼容ZC706的板子有两片 FLASH,型号是S25FL128A,连接方式如下: 可以看到两片是分别接在了XC7Z045芯片的引脚上,是互不相干的并联方式,每个FLASH芯片支持X4模式,也…

Systrace系列11 —— Triple Buffer 解读

本文主要是对 Systrace 中的 Triple Buffer 进行简单介绍,简单介绍了如何在 Systrace 中判断卡顿情况的发生,进行初步的定位和分析,以及介绍 Triple Buffer 的引入对性能的影响。 怎么定义掉帧? Systrace 中可以看到应用的掉帧情况,我们经常看到说主线程超过 16.6 ms 就会…

第一个Vue程序

什么是MVVM MVVM是Model-View-ViewModel的缩写,是一种软件架构模式,用于将用户界面(UI)的开发与业务逻辑和数据分离开来。 在MVVM架构中,Model代表数据模型层,View代表用户界面层,ViewModel充…

基于Java+控制台实现教材管理系统

基于Java控制台实现教材管理系统 一、系统介绍二、功能展示1.教材订购2.教材出售3.教材统计4.库存管理 四、其它1.其他系统实现2.获取源码 一、系统介绍 系统主要包括了教材订购、教材出售、教材统计、库存管理几大部分; 其中功能主要包括: 一、教材订购…

English Learning - L3 作业打卡 Lesson3 Day22 2023.5.26 周五

English Learning - L3 作业打卡 Lesson3 Day22 2023.5.26 周五 引言🍉句1: He would never pour salt on a wound, or make someone feel worse about something that was already a painful experience.成分划分弱读连读爆破语调 🍉句2: However, some…