从零开始的程序逆向之路基础篇 第二章——用OllyDbg(OD)分析一个简单的软件

本文介绍了如何使用OllyDbg(OD)进行程序逆向分析,通过三种方法绕过一个判断explorer.exe进程的小程序的检查:1)修改进程名称字符串;2)更改jnz指令为jz或je;3)强制跳转。并以一个简单的数字判断程序为例,解析了OD分析程序的步骤,包括函数调用、参数传递等概念。
摘要由CSDN通过智能技术生成

作者:Crazyman_Army

原文来自:https://bbs.ichunqiu.com/thread-43469-1-1.html

 

0x00知识回顾 (由于笔者省事,没开XP虚拟机,而且没关闭ASLR,所以每次重载的内存地址会不一样)

在第一章的内容中,笔者已经讲了OllyDbg(简称OD)的界面介绍以及基础的操作,普及了常用的汇编指令


上次课在底下的附件中,我留下了一个演示样例,大家载入OD后搜索到字符串点击跟踪到反汇编窗口的时候会发现与第一章所讲的程序的框架不太一样.

 

image.png


尤其可见多出了很多的call指令,call指令在汇编中就是调用子程序,下面放出代码,各位同学可以比对一下与上篇文件所贴出代码的不同

代码如下:

 

#include <windows.h>

#include <tlhelp32.h>   

#include <stdio.h>

BOOL getProcess(const char *procressName);

BOOL getProcess(const char *procressName)

{

        char pName[MAX_PATH];                                

        strcpy(pName, procressName);                            

        CharLowerBuff(pName, MAX_PATH);                       

        PROCESSENTRY32 currentProcess;                       

        currentProcess.dwSize = sizeof(currentProcess);        

        HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

        if (hProcess == INVALID_HANDLE_VALUE)

        {

                printf("CreateToolhelp32Snapshot()调用失败!\n");

                return FALSE;

        }

        _asm NOP;

        BOOL bMore = Process32First(hProcess, ¤tProcess);        

        while (bMore)

        {

                CharLowerBuff(currentProcess.szExeFile, MAX_PATH);        

                if (strcmp(currentProcess.szExeFile, pName) == 0)            

                {

                        CloseHandle(hProcess);                                

                        return TRUE;

                }

                bMore = Process32Next(hProcess, ¤tProcess);           

        }

        CloseHandle(hProcess);    

        return FALSE;

}

int main()

{

        char* process = "explorer.exe";

     

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值