码迷,mamicode.com
首页 > 其他好文 > 详细

【逆向】IDA远程调试与内存快照

时间:2020-05-21 21:17:13      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:roc   ESS   src   xor   argc   isp   dem   端口   winapi   

前言

简单记录下IDA远程调试功能使用,然后用一个小Demo演示下利用内存快照功能记录动态函数调用与变量的方法。

环境

物理机:调试主机(Windows、Linux、Mac)
虚拟机:被调试主机(Windows、Linux、Mac)

步骤

1、根据被调试主机系统版本,拷贝IDA根目录“\dbgsrv”文件夹下的相应调试组件到被调试主机上。

技术图片
2、在被调试主机启动调试组件,记好IP和端口等信息。

技术图片
3、在调试主机上启动IDA,通过远程调试选项连接被调试主机上的调试组件对目标程序进行调试。

技术图片

技术图片

示例

先写个动态调用的Demo

 1 #include "stdafx.h"
 2 #include <windows.h>
 3 
 4 typedef void(WINAPI *pSleep)(DWORD dwMilliseconds);
 5 pSleep mySleep;
 6 
 7 int _tmain(int argc, _TCHAR* argv[])
 8 {
 9     HMODULE h = LoadLibrary(_T("kernel32.dll"));
10     if (h)
11     {
12         mySleep = (pSleep)GetProcAddress(h, "Sleep");    //
13         __asm xor eax,eax;                               //
14         mySleep(1000);                                   //
15     }
16 
17     system("pause");
18     return 0;
19 }
技术图片
#include "stdafx.h"
#include <windows.h>

typedef void(WINAPI *pSleep)(DWORD dwMilliseconds);
pSleep mySleep;

int _tmain(int argc, _TCHAR* argv[])
{
    HMODULE h = LoadLibrary(_T("kernel32.dll"));
    if (h)
    {
        mySleep = (pSleep)GetProcAddress(h, "Sleep");    //
        __asm xor eax,eax;                               //
        mySleep(1000);                                   //
    }

    system("pause");
    return 0;
}
View Code

使用IDA远程调试,执行到保存Sleep函数地址处

技术图片

执行完后,使用内存快照功能保存快照,然后断开调试器(),在0x13D3F88地址处就能直接显示调用的是Sleep函数了。

 

【逆向】IDA远程调试与内存快照

标签:roc   ESS   src   xor   argc   isp   dem   端口   winapi   

原文地址:https://www.cnblogs.com/SunsetR/p/12933422.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!