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

IDA 常见操作

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

549050-20170325192527158-625520778.png

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

查找程序main函数入口点

在exports选项卡下找到入口点

549050-20170325192558643-2108871918.png

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

549050-20170325192623908-1731567164.png

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

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

549050-20170325192924752-1307746892.png

549050-20170325192942002-513614979.png

库函数名显示出来了
549050-20170325193001252-610111079.png

快捷键

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

使用快捷键,shift+F5打开签名窗口
使用快捷键Insert导入VC的签名库

动态调试验证分析

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

549050-20170325193041080-262421798.png

549050-20170325193100377-772672679.png

修改main函数的名字

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

【修改前与修改后对比】

549050-20170325193134424-871099070.png

549050-20170325193150705-1832705243.png

549050-20170325193205080-1785529966.png

修改之后出现的_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

转载于:https://www.cnblogs.com/17bdw/p/6618124.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值