当前位置:网站首页>IDA PRO中汇编结构体识别
IDA PRO中汇编结构体识别
2022-07-31 21:33:00 【不会写代码的丝丽】
概述
我们有如下一段代码:
#include<stdio.h>
struct My_Struct
{
char name[500];
int age;
int height;
};
struct My_Struct obtainStruct() {
struct My_Struct p = {
"sdsdsds",2,3 };
printf("%s\r\n", p.name);
printf("diff %d\r\n", (size_t)&p.age-(size_t)&p.name);
printf("%d\r\n", p.height);
return p;
}
int main()
{
struct My_Struct p =obtainStruct();
printf("%s\r\n", p.name);
printf("%d\r\n", p.age);
printf("%d\r\n", p.height);
return 0;
}


我们首先把一些call调用的函数名称加上
首先我们注意到个细节 栈区有两个变量默认名称分别为var_3fc和ArgList刚好相差508个字节。而这个字节大小正好是我们定义My_Struct结构体的大小。
另外这里都是 IDA提示都是负数并且都是基于EBP进行加减得到,所以这两个数都是本地变量,而不是函数调用传入的。
举个例子:
具体原因也比较简单:
你可以参阅以下图的栈图结构:
从上图可知 栈区临时定义的变量会在EBP之下,传入的参数会在EBP之上。EBP-xxx 可以得到临时变量 ,而EBP+可以得到传入参数等。
我们打开IDA PRO的结构体视图按下insert键插入一个新的自定义结构体

在上面右键可以添加相对应字段







我们最后利用IDA 看看这段代码的本质含义:

边栏推荐
- Chapter VII
- cas and spin locks (is lightweight locks spin locks)
- 移动web开发02
- Shell script quick start to actual combat -02
- 【核心概念】图像分类和目标检测中的正负样本划分以及架构理解
- 统计UTF-8字符串中的字符函数
- The whole network is on the verge of triggering, and the all-round assistant for content distribution from media people - Rongmeibao
- A shortcut to search for specific character content in idea
- 【Yugong Series】July 2022 Go Teaching Course 025-Recursive Function
- Daily practice——Randomly generate an integer between 1-100 and see how many times you can guess.Requirements: The number of guesses cannot exceed 7 times, and after each guess, it will prompt "bigger"
猜你喜欢

Student management system on the first day: complete login PyQt5 + MySQL5.8 exit the operation logic

Realization of character makeup

flowable workflow all business concepts

Flink_CDC construction and simple use

Architect 04 - Application Service Encryption Design and Practice

Implementing a Simple Framework for Managing Object Information Using Reflection

统计UTF-8字符串中的字符函数

SiC MOSFET的短路特性及保护

NVIDIA已经开始测试AD106和AD107 GPU核心的显卡产品

架构实战营模块八作业
随机推荐
嵌入式开发没有激情了,正常吗?
GateWay implements load balancing
spark reports an error OutOfMemory "recommended collection"
Pytorch lstm time series prediction problem stepping on the pit "recommended collection"
顺序表的实现
返回一个零长度的数组或者空的集合,不要返回null
Redis综述篇:与面试官彻夜长谈Redis缓存、持久化、淘汰机制、哨兵、集群底层原理!...
Routing interception of WeChat applet
微信小程序的路由拦截
BM5 合并k个已排序的链表
ResNet的基础:残差块的原理
基于STM32 环形队列来实现串口接收数据
性能优化:记一次树的搜索接口优化思路
【公开课预告】:超分辨率技术在视频画质增强领域的研究与应用
find prime numbers up to n
Basic Grammar Introduction of Carbon Tutorial (Tutorial)
Chapter VII
NVIDIA已经开始测试AD106和AD107 GPU核心的显卡产品
Carbon教程之 基本语法入门大全 (教程)
求n以内的素数