VS2015版本release查找main函数入口

vc++开发的程序main或WinMain函数是语法规定的用户入口,而不是应用程序入口。入口代码是mainCRTstartup、wmainCRTStartup、WinMainCRTSartup或wWinMainCRTStarup,具体情况由编译器制定。

VS2015版本debug查找main函数在《VS程序反汇编找main函数》。release版本找main函数入口有所区别的地方在于一开始就单步步过一个call指令,jmp跳转。然后经过三个push,进入call内到达用户入口,而且需要注意用户入口点是程序员自己也是可以修改的。

VC编译器的版本不同,mainCRTSartup函数也可能会有所不同,IDA中将mainCRTSartup函数命名为___tmainCRTStartup。

main函数有三个参数,分别为命令行参数个数、命令行参数信息和环境变量信息。根据main函数调用的特征会将3个参数压入栈内作为函数的参数。所以查找用户入口main()前必然会有3个push指令。

IDA中的基本数据类型-局部变量

测试代码

局部变量有三个int、float、char。分别赋值。


int main()
{
//局部变量
// 整型
int nNum = 1; // 浮点型
float fNum = 2.5; // 字符型
char ch = 'A'; printf("int %d , float %f ,char %c", nNum, fNum, ch); return 0;
}

vs反汇编结果

在掌握IDA反汇编工具之前,先调试VS编译的debug版本程序熟悉int 型变量、float型变量、char型变量反汇编后的指令,因为经过VS编译器优化过所以看起来比较容易理解。VS快捷键【alt+8】打开反汇编窗口。

IDA汇编结果

IDA的逆向结果中 var_ 是局部变量,为了让逆向时更容易弄懂这些参数。可以使用快捷键【n】将变量改名。

在IDAF5键大法转换为源码前,可以看到float型变量是16进制,char变量是16进制。那么我们可以点击数值,右键或者R键将char型变量的值直接显示出来。

而float型变量双击dword_415878,在IDA中【edit】->【Operand type】->【Number】->【Floatingpoint】,将值改为float显示。这里将40200000h转换成了2.5。

.text:004113F5                 movss   xmm0, ds:dword_415878 ; fNum

修改之后的反汇编代码。

再次按F5后,IDA将反汇编的源码转换后我们可以得到与源码近乎相同的伪C代码,但是变量类型上还有一些偏差。

参考:

C++反汇编与逆向分析技术揭秘,46页

【逆向工具】IDA使用2-VS2015版本release查找main函数入口,局部变量的更多相关文章

  1. 【逆向工具】IDA使用1-VS2015版本debug查找Main函数,加载符号文件

    IDA 常见操作 空格,切换反汇编视图 选择CALL或是跳转 进入函数内部或是跳转处 返回键 ESC daq.exe 分析32位程序 ,生成的IDA数据库文件是 .idb Idap64.exe 分析6 ...

  2. 利用detours写了一个工具用于instrument任意指定dll的任意指定函数入口

    目录 wiki Disas Dtest Simple withdll load一个dll到指定进程 tracebld显示相关进程涉及的文件读写操作 My Instrumentation tool: w ...

  3. 【逆向工具】IDA使用4-控制台逆向分析 Reverse004.exe 获取密码

    工具 吾爱破解版本OD.IDA6.8 OD使用-动态分析 OD快捷方式 F2 下断点,也就是指定断点的地址F3加载一个可执行程序,进行调试分析F4程序执行到光标处 F5 缩小.还原当前窗口 F7 单步 ...

  4. 【逆向工具】IDA使用3-全局变量、数组、结构体

    全局变量 测试代码 全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建.全局变量是可以被本程序所有对象或函数引用.下面这段代码中将int.float.char变量定义在main函数之外. / ...

  5. 逆向中静态分析工具——IDA初学者笔记之字符串分析

    逆向中静态分析工具——IDA初学者笔记之字符串分析 程序中往往包含很多字符串资源,这些资源存在于PE文件的rdata段,使用IDA反编译后,可以查找到这些字符串, 逆向破解程序通常需要一个突破点,而这 ...

  6. 逆向中静态分析工具——IDA初学者笔记

    逆向中静态分析工具——IDA初学者笔记 //****************************************************************************** ...

  7. 几种Android混淆和逆向工具介绍

    针对Android面临的安全风险,一些防止逆向的方法应运而生.代码混淆在X86架构上曾经被广泛研究,他被用于保护软件的只是产权,但是恶意软件也常常使用他来对抗杀毒软件或者对抗逆向分析者,代码混淆可以给 ...

  8. Android常用逆向工具+单机游戏破解

    android开发环境搭建 我理解的学习路线是首先要掌握和了解常见的工具.搭建环境.然后就是缓慢的积累特征,通过长期的练习使自己进步,通过android逆向课程的学习.常用的工具如下: android ...

  9. java里poi操作excel的工具类(兼容各版本)

    转: java里poi操作excel的工具类(兼容各版本) 下面是文件内具体内容,文件下载: import java.io.FileNotFoundException; import java.io. ...

随机推荐

  1. day25 上山练习 计算圆练习

    # 练习一:在终端输出如下信息 # 小明,10岁,男,上山去砍柴 # 小明,10岁,男,开车去东北 # 小明,10岁,男,最爱大保健 # 老李,90岁,男,上山去砍柴 # 老李,90岁,男,开车去东北 ...

  2. day23 模块引入的一些说明

    模块导入多次也是只导入一次 sys.modules里面会查看有没有被导入 导入后的模块内部的函数,变量就都可以拿来用了 给模块起别名,可以提高代码的兼容性 import time as t 但是被起别 ...

  3. Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds

    Servers -->双击你的启动服务--> 对话框左下角切换选项卡为 Overview -->中东找到Timeouts 把Start(in seconds)改为 100  ,然后按 ...

  4. 自学Zabbix9.2 zabbix网络发现规则配置详解+实战

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix9.2 zabbix网络发现规则配置详解+实战 1.  创建网络发现规则 Conf ...

  5. emwin 之消息 WM_INIT_DIALOG

    @2018-08-09 小记 消息 WM_INIT_DIALOG 在创建窗口时首先发送且只在创建窗口时发送即只发送这一次

  6. Surrounded Regions - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 https://leetcode.com/problems/surrounded-regions/ 注意点 边缘不算包围'O' 解法 解法一:dfs.找处 ...

  7. NOIp2017D2T2(luogu3959) 宝藏 (状压dp)

    时隔多年终于把这道题锅过了 数据范围显然用搜索剪枝状压dp. 可以记还有哪些点没到(或者已到了哪些点).我们最深已到的是哪些点.这些点的深度是多少,然后一层一层地往下推. 但其实是没必要记最深的那一层 ...

  8. CAN总线疑惑与解答

    1    CAN总线2根数据线是怎么表示数据信息1和0的? Can总线采用差分数据表示方法,平时2个数据线为2.5V,表示隐性(1).当用数据0(显性)需要发送时1跟数据线上升到3.5V另一个下降到1 ...

  9. Dom--属性以及创建标签

    一.Dom属性 1.1 设置属性(setAttribute) 设置某个标签的属性,setAttribute(key,value) <body> <div> <input ...

  10. HDU2072 tri树/map/set/字符串hash

    lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题 水题 就是用来试试字符串算法的 tri树 ...