文档详情

二进制程序分析与破解实验.doc

发布:2017-04-16约2.22千字共7页下载文档
文本预览下载声明
 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
显示全部
相似文档