二进制程序分析与破解实验.doc
文本预览下载声明
TOC \o 1-3 \h \z \u 实验四: HYPERLINK \l _Toc375395473 二进制程序分析与破解实验
实验目的:
1、 了解破解:学习破解技术
2、 保护版权:思考如何对抗破解技术从而
实验内容:
破解磁盘上的文件:例子1:学习一个74/75方法破解实例程序
破解内存中的进程:例子2:外挂来了
使用OllyDBG、IDA Pro等静态、动态工具,分析二进制程序的代码、变量、函数、调用接口等逻辑结构硬件环境:?
处理器:Intel Core i3-370
内存:4GBDDR3 1033GHz软件环境:
WMWare Virtual Machine 8
Windows XP Professional
Ollydbg
实验步骤:
74/75方法破解实例程序
源代码:
#includestdio.h
#includewindows.h
intdo_you_have_key()
{
return0;
}
intmain()
{
if(!do_you_have_key())
exit(-2);
else
printf(crackok!);
return0;
}
使用OLLYDBG调试zdj_7475.exe 发现:
0x0040106F地址处为if(!do_you_have_key())判断的关键跳转
将75改为74,复制二进制文件
现在程序成功通过了if判定条件,输出如图:
彩票摇奖程序内存破解
用VC进行反汇编,得到bob和list[]中who的地址
printf(第%d期 一等奖1000万获得者是:%s\n, c, list[who]);
00411AB1 mov eax,dword ptr [who]
00411AB4 mov ecx,dword ptr [eax*4+429DF4]
00411ABB push ecx
00411ABC mov edx,dword ptr [c]
00411ABF push edx
00411AC0 push offset string \xb5\xda%d\xc6\xda \xd2\xbb\xb5\xc8\xbd\xb11000\xcd\xf2\0000000000000... (4240F4h)
edx*4+426A30h代表中奖人地址的地址,即[edx*4+429DF4]代表中间人的地址
为使bob一直中奖,故该指令可以改为:Mov eax,0x424024,使寄存器EAX一直获得”bob”地址。
于是采用OLLEYDBG调试汇编语言修改mov eax,dwordptr[edx*4+429DF4]
为mov eax,0x424024
到此对caipiao.exe的修改结束
下面是干扰程序的代码,主要用了WriteProcessMemory()进行干扰,根据上面得到的地址,编写下面的代码
#include stdio.h
#include windows.h
#include string.h
#include direct.h
HWND find;//句柄
DWORD byread;//实际写入/读取的字节数
LPVOID address1=(LPVOID)0x0040105E;//修改地址1
LPVOID address2=(LPVOID)0//修改地址2
int crack1=0x424024B8;//修改数据1
int crack2=0x909000;//修改数据2
int main()
{
char *a=getcwd(NULL, 0);
char *b;
b = a + strlen(a);
*b ++ = \\;
*b = 0;
char *c = caipiao.exe;
strcpy(b,c);
printf(%s\n, a);//同目录下使用
find=FindWindow(ConsoleWindowClass,a);//查找符合条件控制台程序
if(find)
{
printf(find ok);
DWORD processid;
GetWindowThreadProcessId(find,processid);//获得进程号
HANDLE caipiao=OpenProcess(PROCESS_ALL_ACCESS,FALSE,processid);//获得句柄权限
WriteProcessMemory(caipia
显示全部