作者:Crazyman_Army
原文来自:https://bbs.ichunqiu.com/thread-43469-1-1.html
0x00知识回顾 (由于笔者省事,没开XP虚拟机,而且没关闭ASLR,所以每次重载的内存地址会不一样)
在第一章的内容中,笔者已经讲了OllyDbg(简称OD)的界面介绍以及基础的操作,普及了常用的汇编指令
上次课在底下的附件中,我留下了一个演示样例,大家载入OD后搜索到字符串点击跟踪到反汇编窗口的时候会发现与第一章所讲的程序的框架不太一样.

尤其可见多出了很多的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;
}
&nbs

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

被折叠的 条评论
为什么被折叠?



