收藏 分销(赏)

破解和混合编程实例HackerReverseEngineering.ppt

上传人:二*** 文档编号:8018090 上传时间:2025-01-31 格式:PPT 页数:30 大小:666KB 下载积分:5 金币
下载 相关 举报
破解和混合编程实例HackerReverseEngineering.ppt_第1页
第1页 / 共30页
本文档共30页,全文阅读请下载到手机保存,查看更方便
资源描述
,单击此处编辑母版文本样式,第二级,*,chenkm 0551-3602824,*,单击此处编辑母版标题样式,单击此处编辑母版标题样式,第一级,第二级,第三级,第一级,第二级,第三级,chenkm 0551-3602824,*,破解和混合编程实例,Hacker Reverse Engineering,创建一个最简单的保护机制并破解它,;,选一个实例,在此基础上学习十六进制编辑器,API,窥测器 与 反汇编器,(IDA Pro),破解一个实际的例子,2,chenkm 0551-3602824,2025/1/31 周五,自定义保护机制,并尝试破解,最简单的密码保护算法,:,密码存放位置,:,程序中,/,配置文件,/,注册表,密码保护措施:无,if(strcmp(password entered,reference password),/*,密码不正确*,/,else,/*,密码正确*,/,3,chenkm 0551-3602824,2025/1/31 周五,自定义保护机制,并尝试破解,Protect_password,#define legal_pswmy.good.password,int main(),char user_psw666;,cout user_psw;,if(strcmp(legal_psw,user_psw),cout“wrong passwordn”;,/“,标记,密码不匹配,4,chenkm 0551-3602824,2025/1/31 周五,黑客反向工程热身,黑客反向工程热身,else,cout“password oknhello,legal user|n“;,/“,标记,”,密码匹配,return 0;,2025/1/31 周五,chenkm 0551-3602824,5,/,申斥,密码不匹配,/,申斥,密码不匹配,/,申斥,密码不匹配,2025/1/31 周五,chenkm 0551-3602824,6,自动过滤上述程序二进制内容结果,00007d11:LCMapStringW,00007d1f:kernel32.dll,0000805c:crackme 00h,0000806a:enter passwd:,0000807d:my.good.password,0000808f:wrong password,0000809c:password ok,000080af:hello,legal user!,000080c2:.?Avios,000080de:.?Avistream,结果分析,2025/1/31 周五,chenkm 0551-3602824,7,黑客反向工程热身,编译后的程序执行,猜测密码,-,凭运气,难度大,分析程序的组成,代码,数据,(,密码字符串,),2025/1/31 周五,chenkm 0551-3602824,8,黑客反向工程热身,data:,数据段,rdata,:,只读数据,字符串文字和常量,.,如本程序中的,myGOODpasswordn“,。,bss,:,未初始化数据,比如函数和静态变量。,idata:,包括导入库和导入地址名称表。,edata:,包含了应用程序或,DLL,的导出数据。,text(code):,代码段。,9,chenkm 0551-3602824,2025/1/31 周五,黑客反向工程热身,c,中,内存数据分为如下几个区,1.,栈,-,由编译器自动分配释放,bp+xx,bp-xx,。,2.,堆,-,一般由程序员分配释放,new(),delete(),函数。,3.,全局区(静态区)共享存储区。,初始化的全局变量和静态变量在一块区域,(data),。,未初始化全局和静态变量放在相邻区域(,bss,)。,4.,另外还有一个专门放常量的地方,(rdata),。,C+,中,内存分成,5,个区,分别为:,1.,栈,,里面的变量通常是局部变量、函数参数等。,10,chenkm 0551-3602824,2025/1/31 周五,黑客反向工程热身,2.,堆,,由,new,分配的内存块,由,delete,回收。,3.,自由存储区,,由,malloc,等分配的内存块,和堆相似,,由,free,回收。,4.,全局,/,静态存储区,,全局和静态变量均被分配到同一块内存中,由该语言编译器自行确定,(,与,C,语言有差别,),。,5.,常量存储区,,存放常量,不允许修改。,静态变量,/,全局变量,:,全局,/,静态存储区。,常量存放在常量区。,程序放在代码区。,11,chenkm 0551-3602824,2025/1/31 周五,黑客反向工程热身,查看二进制文件,.,根据,:,编译器将初始变量放在如下数据段中,.,data,rdata,自定义段,12,chenkm 0551-3602824,2025/1/31 周五,黑客反向工程热身,改写动机:隐藏密码字符串,增加一点分析难度。,int count=0,/,从现在开始,所有初始化变量都放置在,.kpnc,中,.,#pragma data_seg(“,kpnc,”),char passwd=PASSWORD;,#pragma data_seg(),/,现在所有初始变量又将放到默认段,rdata,中了,.,char buffPASSWORD_SIZE=“;,13,chenkm 0551-3602824,2025/1/31 周五,黑客反向工程热身,改写后的源代码清单,-list1_p9.cpp,idag list1_p9.exe,目标代码中出现了如下段落,:,text,rdata,data,idata,kpnc,只有在,kpnc,段中才能看到密码字符串信息,myGOODpasswordn“,14,chenkm 0551-3602824,2025/1/31 周五,黑客反向工程,-,熟练使用反汇编器,修改二进制代码的工具:,hiew(,动机,),反汇编工具:,ida,大家推荐工具:,softice,汇编,:,将汇编程序转换为机器语言程序。,反汇编,:,将机器语言程序转换为汇编指令。,15,chenkm 0551-3602824,2025/1/31 周五,分析过程,:,.rdata:00420000 00 00 00 00 24 79 F0 46 00 00 00 00 02 00 00 00,.$y,餏,.,rdata:00420010 35 00 00 00 00 00 00 00 00 60 02 00 50 61 73 73,5.Pass,rdata:00420020 77 6F 72 64 20 4F 4B 0A 00 00 00 00 57 72 6F 6E,word OK.Wron,rdata:00420030 67 20 70 61 73 73 77 6F 72 64 0A 00 00 00 00 00,g password.,rdata:,00420040,6D 79 47 4F 4F 44 70 61 73 73 77 6F 72 64,0A,00,myGOODpassword.,rdata:00420050 00 00 00 00 45 6E 74 65 72 20 70 61 73 73 77 6F,.Enter passwo,rdata:00420060 72 64 3A 20 20 20 00 00 00 00 00 00 73 74 72 20,rd:.str,rdata:00420070 21 3D 20 4E 55 4C 4C 00 66 67 65 74 73 2E 63 00,!=NULL.fgets.c,黑客反向工程,-Ida-list1_7.exe,16,chenkm 0551-3602824,2025/1/31 周五,使用密码串进行比较的程序块,.text:0040104D,.text:00401052 add esp,0Ch,.text:00401055 push offset,s_Mygoodpasswor,(,00420040h)myGOODpasswordn,.text:0040105A lea ecx,ebp+var_68,.text:0040105D push ecx,.text:0040105E call strcmp,.text:0040105E,.text:00401063 add esp,8,.text:00401066 test eax,eax,.text:00401068 jz short loc_401079,17,chenkm 0551-3602824,2025/1/31 周五,strcmp,传递两个参数,:,push offset,s_Mygoodpasswor,;参考密码,lea ecx,ebp+var_68,;用户输入密码区,push ecx,call strcmp,C,规范:从右到左的顺序将参数压入堆栈。,恢复的结果为:,strcmp(var_68,myGOODpasswordn,),黑客反向工程,-C,规范的知识,18,chenkm 0551-3602824,2025/1/31 周五,黑客反向工程,-C,规范的知识,1,从堆栈中删除参数不由函数自身完成,而是由调用程序完成,这样能创建数目可变的参数。,调用程序 被调用程序,call strcmp ret 8,addesp,+08,2,常用清除堆栈指令,add esp,XXX,32,位,:n_args=XXX/4,16,位:,n_args=XXX/2,pop reg,sub esp,-XXX,3,由,call,后的,add esp,8,指令知该函数个数为,2,。,19,chenkm 0551-3602824,2025/1/31 周五,黑客反向工程,-,分析修改的程序,text:00401063 add esp,8,.text:00401066,test eax,eax,.text:00401068 jz short loc_401079,.text:0040106A push offset_WrongPassword,;,Wrong passwordn,.text:0040106F call printf,检查函数返回值是否等于零,若为,0,,表示密码正确,进行相应提示;否则转错误处理程序。,修改:,JNZ-JZ,,,test eax,eax,xor eax,eax,等,JZ:74-JNZ:75 XOR:31,20,chenkm 0551-3602824,2025/1/31 周五,黑客反向工程,-,外科手术,(,改程序,),解决方法:使用直接编辑二进制工具,hiew32,等,.,Hiew32 list1_p7g.exe,目标:寻找,JZ,机器代码,定位,1068h,偏移,将 改为,75,21,chenkm 0551-3602824,2025/1/31 周五,黑客反向工程预备知识,反汇编,-,二进制到汇编代码,(X86),二进制 汇编代码,90,NOP,89D8,MOV AX,BX,74,JZ,39C8,CMP AX,BX,反编译,-,汇编到高级语言,(C,或,C+),MOV AX,1000,ADD AX,10,MOV 1000,AX,var1000=var1000+10,类,/,模型,/,概念识别,-,从高级语言到类,/,模式,/,概念。,22,chenkm 0551-3602824,黑客反向工程预备知识,如何创建与绕过保护环节,若能了解创建保护机制的知识更好。,黑客底层分析技术,-,调试器与反汇编器使用技能,熟练使用调试器,熟练使用反汇编器,二进制编辑工具,识别与重建源代码关键结构,-,从二进制或汇编中识别出函数、局部与全局变量、控制结构、对象、运算符等。降低程序分析的工作量。,23,chenkm 0551-3602824,黑客反向工程预备知识,根据喜好选用一些工具软件,调试器,-Softice,反汇编器,-IDA,十六进制编辑器,-Hiew,开发包,-SDK,与,DDK,操作系统,-Windows XP,编译器,-VC6.0,(C+),24,chenkm 0551-3602824,黑客反向工程预备知识,调试器介绍:,Softice:,黑客们使用的主要武器。,3.26,版本是一个经受了时间考验的版本,它具有很好的稳定性。,OllyDby:,不及,Softice,。,TRW:,国产的较好的工具。,VC6,自带的调试器,-,常用方法介绍。,Debug:,最古老的,最基本的,-,使用方法。,25,chenkm 0551-3602824,黑客反向工程预备知识,反汇编器介绍,IDA-,常用功能介绍,W32DASM,SR(Source),Hex2ASM,26,chenkm 0551-3602824,黑客反向工程预备知识,十六进制编辑器:,Hiew-,常用功能介绍,FlexHex,Hedit,WinHex,Editor,27,chenkm 0551-3602824,黑客反向工程预备知识,SDK,WinAPI,函数,用于,PE,文件,DUMPBIN,实用工具文档资料,DDK,有助于弄清楚驱动程序如何开发、工作,以及如何被攻击。包含一个非常有价值的文件,NTDDK.h,。,28,chenkm 0551-3602824,黑客反向工程预备知识,常用汇编语言,(,机器,),指令,寄存器的用途,堆栈,-,常用概念介绍,中断调用,处理器文档资料,:,www.,Intel,.com,29,chenkm 0551-3602824,30,课程说明(,2,),2.,教材和参考文献,黑客反向工程,(,第二版,),,卡巴斯基,,各种相关文献或学术文章,3.,考试或考查,一次正式课堂汇报,(ppt+,报告不超过,30,分钟,,70%),平时发言或报告或点名,30%,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服