IDA 常见操作

  1. 空格,切换反汇编视图
  2. 选择CALL或是跳转 进入函数内部或是跳转处
  3. 返回键 ESC

daq.exe 分析32位程序 ,生成的IDA数据库文件是 .idb

Idap64.exe 分析64位程序, 生成的IDA数据库文件是 .i64

查找程序main函数入口点

在exports选项卡下找到入口点

双击start_0 就进到了函数入口处。在没有导入签名库识别库函数前,显示的是sub_XXXX这样的地址。

使用IDA签名文件识别库函数

签名(view->open subviews->Signatures,右键->Apply new signature,可以用来指定加载IDA的库函数签名文件。这个是IDA的非常有用的一个功能。在逆向过程中,MFC、SDK、Delphi编写的程序都会用到大量的库函数,而IDA的库函数签名文件能够识别出大部分的库函数。我们分析用户函数时,根据这些库函数推测出用户函数的作用。不同语言编写的程序也需要选择使用相对应的签名文件。例如MFC则选择使用vc32mfc,控制台则选择使用vc32rtf等。

库函数名显示出来了

快捷键

除了使用图形化外,还可以通过记忆快捷键加快逆向速度。

使用快捷键,shift+F5打开签名窗口

使用快捷键Insert导入VC的签名库

动态调试验证分析

F2在调试处下断点,在平台选择的下拉列表选择【Local Win32 debugger】,点击旁边的 绿色三角启动按键。单步步入与单步步过跟OD的按键一样,都是F7、F8

修改main函数的名字

找到main函数后,使用快捷键 【n】 修改签名文件识别出来的___tmainCRTStartup函数改名成main。可以将main函数的默认参数显示出来,

【修改前与修改后对比】

修改之后出现的_cdecl为函数调用协议。

相关知识点:

  __stdcall、__cdecl和__fastcall是三种函数调用协议,函数调用协议会影响函数参数的入栈方式、栈内数据的清除方式、编译器函数名的修饰规则等。

调用协议常用场合

__stdcall:Windows API默认的函数调用协议。

__cdecl:C/C++默认的函数调用协议。

__fastcall:适用于对性能要求较高的场合。

函数参数入栈方式

__stdcall:函数参数由右向左入栈。

__cdecl:函数参数由右向左入栈。

__fastcall:从左开始不大于4字节的参数放入CPU的ECX和EDX寄存器,其余参数从右向左入栈。

栈内数据清除方式

__stdcall:函数调用结束后由被调用函数清除栈内数据。

__cdecl:函数调用结束后由函数调用者清除栈内数据。

__fastcall:函数调用结束后由被调用函数清除栈内数据。

函数调用方式例子:

●printf 是什么方式?

答:C方式,_cdecl,CALL完之后在函数外面平衡参数的堆栈

●MessageBoxW是什么方式?

答:_stdcall方式,CALL内部平衡堆栈

参考:

逆向分析点滴

http://blog.csdn.net/iiprogram/article/details/1665392

【逆向工具】IDA使用1-VS2015版本debug查找Main函数,加载符号文件的更多相关文章

  1. 【逆向工具】IDA使用2-VS2015版本release查找main函数入口,局部变量

    VS2015版本release查找main函数入口 vc++开发的程序main或WinMain函数是语法规定的用户入口,而不是应用程序入口.入口代码是mainCRTstartup.wmainCRTSt ...

  2. vs2015启动崩溃,wpfgfx_v0400.dll加载D3DCompiler_47.dll失败

    有一段时间没有用vs2015,今天一启动就crash,尝试了以下办法: 1. 卸载掉这段时间安装的一些软件和vs插件 2. 修复安装 3. 卸载.重新安装vs2015 sp2版本 4. devenv. ...

  3. 禁用ngen版本的.NET Framework dll加载

    在调试时会发现出于性能考虑.NET Framework dll加载的都是ngen版本,比如:System.dll,实际加载System.ni.dll. 如果希望加载非ngen版本,可以设置系统环境变量 ...

  4. VS2015 解决方案 或者项目 卡 正在加载 的解决办法

    导致项目无法打开以及VS无法关闭. 解决方法: 1.关闭VS: 2.去C:\Users\<your users name>\AppData\Local\Microsoft\VisualSt ...

  5. Android 动态加载(防止逆向编译) jar混淆加密

    最近工作中接到了一个研究防止逆向编译的任务.研究了几天资料,最后基本实现了防破解技术,在这个工程中,也略有一些心得体会,现整理下来分享,供大家探讨参考研究.文中如有纰漏.失实之处,请大家及时给与指正. ...

  6. 使用Windows安装的最高版本IE内核加载内嵌页(转载)

    客户端程序内嵌Webbrowser控件时,默认情况都是使用IE7兼容模式打开网页的.但是IE7有很多新的特性不支持,导致无法正常显示出来,所以需要强制使用高版本的IE内核来加载.渲染. void Ch ...

  7. VC2008下CRichEditView加载RichEdit4.1版本(还有一些类似的文章)

         在之前的文章<RichEdit 各个版本介绍>中,写到RichEdit已经到达6.0版本了,而我们经常编程使用的却还是2.0,在vc6.0中甚至还使用1.0版本,更高的版本修复了 ...

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

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

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

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

随机推荐

  1. 洛谷P4072 [SDOI2016]征途(带权二分,斜率优化)

    洛谷题目传送门 一开始肯定要把题目要求的式子给写出来 我们知道方差的公式\(s^2=\frac{\sum\limits_{i=1}^{m}(x_i-\overline x)^2}{m}\) 题目要乘\ ...

  2. innerHTML、outerHTML、innerText、outerText的区别及兼容性问题

    今天看了很多文章关于innerHTML.outerHTML.innerText.outerText的区别,都是很模糊的一个介绍,所以自己总结下这些区别以及一些重点内容.很多文章在描述这些区别的时候,都 ...

  3. 架构师成长之路6.1 DNS理论

    点击返回架构师成长之路 架构师成长之路6.1 DNS理论 1.DNS一些基本概念       ① FQDN:Full Qualified Domain Name,完全限定域名,即每个域在全球网络都是唯 ...

  4. luogu2178/bzoj4199 品酒大会 (SA+单调栈)

    他要求的就是lcp(x,y)>=i的(x,y)的个数和a[x]*a[y]的最大值 做一下后缀和,就只要求lcp=i的了 既然lcp(x,y)=min(h[rank[x]+1],..,[h[ran ...

  5. bypy 用法

    因为服务器上爬取到的40个G的数据采用http,ftp,scp传输到本地效果不太理想.找资料就看到了bypy,利用百度云存储解决这个问题,解决了服务器带宽有限的问题. pip install bypy ...

  6. anaconda python no module named 'past'的解决方法

    如上图所示,错误就是:No module named 'past' 解决办法不是下载‘past’包,而是下载‘future’包: 我是安装了anaconda集成环境,python的单独环境应该也是同样 ...

  7. activeMQ点对点

    摘要: ActiveMQ 点对点消息 Point-to-Point 是一对一 创建消息生产者 /**  * 点对点消息生产者  *   * @author Edward  *   */ public  ...

  8. 用webstorm来开发微信小程序之less的配置

    1.安装less. 安装好node之后,打开运行-->cmd-->进入安装node的文件夹目录-->输入 npm install -g less. 然后自动就会在C:\Users\A ...

  9. LVM基本概念及工作原理

    LVM基本概念及工作原理 背景知识: 一直困惑于LVM,特地找资料查了查,终于对LVM的概念和工作原理有了深入的理解.接下来记录下.新的技术出来必定是为了改变现有的不足,所以LVM的出现是由于对现有磁 ...

  10. if语句和case语句用法展示

    if语句和case语句用法展示 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.单分支if条件语句 1>.语法格式一 if [ 条件判断式 ];then 源代码 fi 2& ...