逆向研发工程_第1页
逆向研发工程_第2页
逆向研发工程_第3页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程名称:逆向工程实践报告题目:使用-Ollvdbg 破解程序课程教师:何兴高学院:信息与软件工程学院姓名:杨博專辰学号:201522220234、题目名称使用Ollydbg破解程序、题目内容使用C+语言通过 Windows API编写一个登录程序,当用户输入正确的用户名和密码之后,提示登录成功,否则提示登录失败。通过Ollydbg 软件进 行反汇编,对程序进行破解。程序界面如下图。逆向工程豊录三、知识点及介绍。1. 汇编语言介绍汇编语言(Assembly Language )是面向机器的程序设计语言。在汇编语 言中,用助记符(Mnemonics )代替机器指令的操作码,用地址符号(Symbo

2、l) 或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降 低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语 言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编 语言编译器(即汇编器)转换成机器指令。汇编程序将符号化的操作代码组装成 处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。 因此,有时候 人们也把汇编语言称为组合语言。汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并 能直接控制硬件的语言。汇编语言,作为一门语言,对应于高级语言的编译器, 需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码

3、。高级的汇编 器如MASM ,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征, 比如结构化、抽象等。在这样的环境中编写的汇编程序, 有很大一部分是面向汇 编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部 用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。 汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。2. C+语言介绍C+是在C语言的基础上开发的一种通用编程语言,应用广泛。C+支持多种编程范式 面向对象编程、泛型编程和过程化编程。最新正式标准 C+14于2014年8月18日公布。其编程领域众广,常用于系统开发,引擎 开发等

4、应用领域,是至今为止最受广大受用的最强大编程语言之一 ,支持类:类、 封装、重载等!C+语言的主要特点表现在两个方面,一是尽量兼容 C,二是支持面向对象 的方法。它操持了 C的简洁、高效的接近汇编语言等特点,对 C的类型系统进 行了改革的扩充,因此C+比C更安全,C+的编译系统能检查出更多的类型 错误。另外,由于C语言的广泛使用,因而极大的促进了 C+的普及和推广。3. Wi ndows API 介绍Win dows这个多作业系统除了协调应用程序的执行、分配内存、管理资 源之外,它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每 一种服务就是一个函数),可以帮应用程式达到开启视窗、描

5、绘图形、使用周边 设备等目的,由于这些函数服务的对象是应用程序 (Applicatio n),所以便称之 为 Applicati on Programmi ng In terface,简称 API 函数。WIN32 API 也就是Microsoft Windows 32位平台的应用程序编程接口。当WINDOWS操作系统开始占据主导地位的时候,开发WINDOWS平台下的应用程序成为人们的需要。而在WINDOWS程序设计领域处于发展的初期, WINDOWS程序员所能使用的编程工具唯有 API函数,这些函数是WINDOWS 提供给应用程序与操作系统的接口,他们犹如“积木块”一样,可以搭建出各种 界面

6、丰富,功能灵活的应用程序。所以可以认为API函数是构筑整个 WINDOWS 框架的基石,在它的下面是 WINDOWS的操作系统核心,而它的上面则是所有 的华丽的WINDOWS应用程序。程序员想编写具有Windows风格的软件,必须借助API,API也因此被赋 予至高无上的地位。但是,如若没有合适的Windows编程平台,那么Windows 开发是一项很复杂的工作。在可视化编程IDE出来之前,那时的WINDOWS程 序开发还是比较复杂的工作,程序员必须熟记一大堆常用的API函数,而且还得对WINDOWS操作系统有深入的了解。然而随着软件技术的不断发展,在 WINDOWS平台上出现了很多优秀的可视

7、化编程环境,程序员可以采用“所见 即所得”的编程方式来开发具有精美用户界面和功能强大的应用程序。四、工具及介绍1.Ollydbg 介绍OLLYDBG是一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3级调试器,非常容易上手,己代替 SoftICE成为当今最为流行的调试解 密工具了。同时还支持插件扩展功能,是目前最强大的调试工具。OllyDbg 可以以在任何采用奔腾处理器的 Windows 95、98、ME、NT或 是XP (未经完全测试)操作系统中工作,但我们强烈建议您采用300-MHz以上的奔腾处理器以达到最佳效果。还有,OllyDbg是极占内存的,因此如果您需要使用

8、诸如追踪调试Trace之类的扩展功能话,建议您最好使用128MB以上 的内存。OllyDbg的最大特点之一就是分析。它会分析函数过程、循环语句、选择语句、表tables、常量、代码中的字符串、欺骗性指令 tricky constructs、 API调用、函数中参数的数目,import表等等.这些分析增加了二进制代码的 可读性,减少了出错的可能性,使得我们的调试工作更加容易。2.MINGW 介绍MinGW,是Minimalist GNU for Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你 在GNU/Linux和Windows

9、平台生成本地的Windows 程序而不需要第三方C 运行时库。MinGW是一组包含文件和端口库,其功能是允许控制台模式的程 序使用微软的标准C运行时间库(MSVCRT.DLL),该库在所有的NT OS上有 效,在所有的 Windows 95 发行版以上的 Windows OS 有效,使用基本运行 时间,你可以使用 GCC写控制台模式的符合美国标准化组织(ANSI)程序, 可以使用微软提供的 C运行时间扩展,与基本运行时间相结合,就可以有充分 的权利既使用 CRT( C Run time )又使用 Win dowsAPI功能 五、源程序#i ncludevwi ndows.hLRESULT CA

10、LLBACK Win dowProc(HWND hwn d,UINT uMsg,WPARAM wPara m,L PARAM lParam );int CALLBACK WinM ai n( HINSTANCE hI nsta nce,HINSTANCEhPrevInstance,LPSTR lpCmdLine,int nCmdShow)WNDCLASS wn dClass;wn dClass.style=CS_HREDRAW|CS_VREDRAW;wn dClass.lpfnWndProc=Wi ndowProc;wn dClass.cbClsExtra=O;wn dClass.cbWndE

11、xtra=0;wn dClass.h In sta nce=h In sta nee;wn dClass.hIc on=LoadIco n(NULL,IDI_APPLICATION);wn dClass.hCursor=LoadCursor(NULL,IDC_ARROW);wn dClass.hbrBackgrou nd=(HBRUSH)(COLOR_WINDOW+1);wn dClass.lpszMe nu Name=NULL;wndClass.lpszClassName=主程序界面;RegisterClass(&wn dClass);HWND hwn d=CreateWi ndow(wn

12、dClass.lpszClassName,TEXT(逆向工程),WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU,CW_USEDEFAULT,CW_USEDEFAULT,400,300,NULL,NULL,hln sta nee,NULL );ShowWi ndow(hw nd,SW_SHOW);UpdateWi ndow(hw nd);MSG msg;while(GetMessage(&msg,NULL,0,0)Tran slateMessage (&msg); DispatehMessage (&msg);return msg.wParam;LRESULT CALLB

13、ACK Win dowProe(HWND hwn d,UINT uMsg,WPARAMwPara m,L PARAM IParam )static HWND hEditUserName;static HWND hEditPassword;static HWND hButto nLogi n;HDC hdc;PAINTSTRUCT ps;RECT rect;switch(uMsg)case WM_CREATE:hButto nLogi n=CreateWi ndow(TEXT(butto n),TEXT(登录),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,170,130,

14、60,40,hw nd,NULL,(LPCREATESTRUCT)IParam)-hl nsta nce,NULL);hEditUserName=CreateWi ndow(TEXT(edit),NULL,WS_CHILD|WS_VISIBLE|ES_LEFT|WS_BORDER,130,55,150,25,hw nd,NULL,(LPCREATESTRUCT)IParam)-hl nsta nce,NULL);hEditPassword=CreateWi ndow(TEXT(edit),NULL,WS_CHILD|WS_VISIBLE|ES_LEFT|WS_BORDER|ES_PASSWOR

15、D,130,85,150,25,hw nd,NULL,(LPCREATESTRUCT)IParam)-hl nsta nce,NULL);return 0;case WM_PAINT:hdc=Beg inPain t(hw nd,&ps);rect.left=150;rect.top=100;rect.right=50;rect.bottom=30;DrawText(hdc,TEXT(用户名:),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);rect.left=150;rect.top=160;rect.right=50;rect.bottom=30

16、;DrawText(hdc,TEXT(密 码:),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);return 0;case WM_COMMAND:if(HWND)IParam=hButt on Logi n)char userName20;char password20;GetWi ndowText(hEditUserName,userName,20);GetWi ndowText(hEditPassword,password,20);if(strcmp(userName, 杨博辰)=0&strcmp(password,201522220234)=0

17、)MessageBox(hwnd,TEXT(登录成功),TEXT(提示),MB_OK);elseMessageBox(hwnd,TEXT(登录失败),TEXT(提示),MB_OK);return 0;case WM_DESTROY:PostQuitMessage(0);return 0;return DefWi ndowProc (hw nd, uMsg, wParam, IParam);六、过程及分析破解方法一:程序在输入用户名和密码后点击登录,如果用户名和密码正确,则会弹出登录成功的消息框,否则会弹出登录失败的消息框。在反汇编窗口中单击右键选择“查找”,然后选择“当前模块中的名称(标签)”

18、,按下键盘上的M键,找到USER32.MessageBoxA,如下图所示。0O4OE214,JI QSL注.i data;2i_L.U1UJ r .1.y 丄烷 1 CL裁匸丄 4制OK1IEL32. Int:erl ocke Jx ckankge0D4OE26C.1 dataam STcr t. 1 oLCO4OE210” idataI:正 W二.IsDBCSLattdByt Ik0D40E298iid&taimsTort. i ssp&at0CM0E21C.idataJwAjZE:;NEL/. LevCjritic4uLSction0040E2F8,idtawAlJ3ERz:2. Laad

19、CursorA0040E2FC.idata1TSER32. LoaJicanA0040E29C.i dataJm ETcirt. 1 ocalecoiKvCD4DE2A0.idatSLEwAftSVCrt. fnd.locOO4OE2A4 id&taiffisvsr t. ffifestowes0040E250 idtttJ|ai STcrt. nt Qur_max,idtafeiAr gTgrt. m ncpy0040E30D,idatawAKessageBokA0D4OE220.idataKEm32 BiLtiByteToli JeCharCO4CE270-idata!wAt srcr t

20、. oneici t0040E304.idata1ITSER 2. F&EtQui fHeEsae0040E254.id&taJSaisTort. p snviron0D4DE258.i data3imsvcrt. p modeD040E2AC,i data弓ii ETcirt. r ealloc:0D4OE3O8lx1JSERE 2. Re gist erCl as e A0040E324.ii|a1 ibgec s dwZl. regi s ter frame 1 noOO4DE2B0Jftsvcrt.OO4OE274.idttaJu KTcrt. ittnada004QE2Z4nn ii

21、尸 idtt* a iJ:rETJJEL/. SetUzJindleiExvepti QhFiltr1I1在该行单击右键,选择“反汇编窗口中跟随输入函数”,转到该函数的汇编代码处,在返回处加上断点。如下图所示叵文仲(E)萱看也谓试(D)插伴迪选项CB 窮口回裂劝QDI里回上巴1闵勺邑I里Eg凹空邑;g|空凹国回画旦囹1地址HES数据注释汨區F4业SEFFMOV EDI EDI75B2F4I455PUSH ESP75B2F4Z59BECMDV EBf; ESP75B2F4Z7ex aoPUSH 075BZF4J9FT75 14PUSH DWOFJ JTK SSEBF+1475B2F4ZCFI7E

22、 10PUSH DWORD ITR SS那 F+1075B2F4IFFF75 OCFUEH DVORD TTR SS -tEBF-F5B2E4JZFF75 OSFUEH DWQED JTH S3;Eeef-rh. ?4?5E3 09000000匚ALL USEE32. He ez ageB oxExk7E.E2F4TABDFOP KBF75B2F4TBC2 1000RETM lu75B2F4FE90MOP巧B2F4FF9QHOF75BZF5C390MOP75B2F5C1卯HOF然后按F9运行程序,输入用户名和密码,如下图所示点击登录,弹出登录失败消息框。程序执行到断点处暂停,按F7单步步入,程

23、序执行到调用MessageBox函数的下一条指令处。如下图所示Wife 1 P CJt09401 TED 004017F2Q(J40irJi00401776OJ4O17JE00401S01004010040014018030140180B 0(J40180DQUW1315 0040181D 004013E50401828004013i2BOLI4O1S3DOU4O.183300401835O4O1S3Dan)40i&45O14O134DOCI4O1S5D 00401353LTUI:匚*阳 VE$CQOUO CMXscrt. strcmp?S5C075 3F CT4424 M SME K8904

24、24ES f76BOOOO95C0?5 2BC74424 IC?4424 IC7W4 i8B45 06890424ES TOSCOOOOS3EC 10EB 26C74424 OCC74424 08C74424 04WS OB890424ES CB5C000Q 63EC 10DCOS04|JIVU V LVH UJW IL J tl 77 L-bbJJ-山貝A2iTEST EAI, EAXBTZ SHOUT t est. K401635MDV DWOM PTE S5 :耶I楓fest. M4CADA2LEA EAXjDfOBC fTE SS;EBrMM)OV DOED PTR SS: ESP,

25、EAICALL JMF. ftm3?crt. strcmp?TEST EAX, EAJfWDVon AfilTOY B41MDV00( 例 BDiI nniniSNORT ttat 00401C35rmTTR PTL EAX. DVOKDDWOBDDTOBDDTOMSS ESI-HZ.OSS rESr-. test.OOCADKF SS: ESP4! test. 004CADB4FTR S5:EET北SS: ESP, EANMCMDVCALL sirsDTOltD PTRMOVMOV WVMDVESP, IliSHORT tEt. D040165BDWOMDVOEDDTOMPTR FTR TT

26、REWL WORDDTOMJ TTEss espcLoSS: ESP- las t. 004HAOKFSS ESP4 tftst.0C4CAnBT FTF SS EBTSSS:ESTf EMdd innrfcnnnnn iinl/nCALL CJIT UEWS.MessaseEcniASITE ESP, 1灰色指令的上一条指令是当用户名和密码不正确时执行,提示登录失败。004017ED 处和 00401804 处的 CALL vJMP.&msvcrt.strcmp 指令是比较字符串,分别比较用户名和密码是否相等。004017F4处和0040180B处的JNZSHORT test.0040183

27、5 指令是如果字符串不相等,跳转到 00401835 处执行, 提示用户登录失败。将两处JNZ指令换成NOP指令,无论用户输入的用户名和密码是否正确,都会提示登录成功。如下图所示004017EA.G904Z4M3Y EIOED FTR SS EST1 EAK004017ED.E8 OE6COCOOCALL (IMF. ftmsvcr t.cmp004017F?.85COTEST EAX, EA3I0O4Q17F4犯HOP004017T590nor004017F6C 74424 04 h2iMOV DIORD PTR SS ESH. tst M40ADk200401TFE.6P45 BClea

28、己屈“同期 rm ss ebf-mOW1SOL,6304241TOY DffQrB FTR 常:ESrl EWi0040S04.E8 F7S20000CMX CJTIF.stTcmpQQ401U0?.sxaTESI E AX, m0040130B90MOP0040iaocHOP05401 SODC 7444 0C 00C MDV DTORD PTR 5: EET4C.Lonruni RiRm iFi wnv ntnitn ptfrFT-tfi+arf nndnAniF将修改后的程序保存为test2.exe后运行,与上述分析一致,无论用户输入 的用户名和密码是否正确,都提示登录成功。如下图所示破

29、解方法二:在反汇编窗口中单击右键,选择“超级字符串参考 +( U)”,然后选择“查 找UNICODE ”,会弹出一个“超级字串参考+ ”窗口。如下图所示港電1的匸屿皿曲LC昨卫Ti 44110JIMOJSzl irwn?*s iiWi祁翔 1IWHCT3D40i3M innain:T3540243910413131 冲心引開J阴英開JMJJUL4 )跑非裁IFMOSjlKPC?IT7PT7MJb1PTV!EVPTbPCVKJKH3YQFLfREVMiiD FIR SB MJ ED PTB 55:M1B5 TIR SS3*0133 HR SSMliEl FTH 溜 LKiJFHl. tKPHLi

30、n t LY4t 山门 1EF test 0D4CJC3 中Uti 那F. tr昭F峙卜 l 悒 S jmiLi rru su. StfDKD rr 附 她妙riu ss wnftD rm -o nrn; rwms i*改聽如百 il X4Cx2 rr rrfeW 詐 0C4CjJBJ 吐 It IXMI0E WUMJC: (miftfn LiQMCiU#!UU4L4L:aSlJn tntE5M 严z jsr-e, . tm tKP)r tnt 亠 打慎补e CO柿的 aV,tHi OI40liL MD虹i TTB SS HSFltrct JFiaii l4L ALAE 03. IkI EC4

31、DAIA0 lifDE TTE 55.UtUtT- HP 55WKD IfR 鹉 rwittCWtHLr* t?if nriWxiflF 代曲仁QC4CJJ3E m t OCHKUM 04394 coMmCD4C 1136I. TtStL tealCCKK345i_ k itu_Ef mi_aFiioij L eqj-l - d_l_fT _ixl tr fluffs_&吃 x ku*_r m _11 ;i *s_ipF#l ii prj 13 Jll Jy.i1rl J.i诵丨刖b.FdIis V_F E ffl st ETfll 15 MZ_ screffl 5tCF_fl W.t_i ?

32、if*-C_T f gc S fllTi F*h尸4AI 41 l_r*(iifrir_frifiTdlibjaj-13 1 JivjrihtiT i 別ghzgi f r.希w.imFn darqq231 2222023-1M ppr TNn V ir kvlfwhr,ftk lite VT- *yi pri f fijI rJ. for hi !jrlr-. | q jdb *Hzjoiag 畔匕匸缶 f lnsLtiML Llt.%d. *-=.UnJUINdi pdp r vllEfit iiKi prill DE kl tb:ci kqavtfi :血ML 曲 土曲艸山山冲!二10M

33、fdif f在上图中发现“杨博辰”和“ 201522220234 ”可能是用户名和密码,尝试后发现登录成功,如下图所示逆向工程破解方法三:豊录按照破解方法一中的方式,执行到登录失败后的那一条语句。如下图所示00401707 004017DC 0401FDF 00401?E7 00401 FEA 00401 FED 00401(72 0401 ?F4 0401?F6Q:i4i:ilTFE04018010040180400401809040130B 4O180D 0401815 040181D 00401825Q0W1B2B W1S2B 00401330 00401333 00401335 004

34、0183D 00401545 0040134D 0040185Q 0401853E8 3C6DOOOO CALL如5ER32.Ge ttfindo#TextA93EC OCC74424 04BME DO3MM24E& CE6CX00asco75 3FC74424 04QD45 BCS90424EE J76BOOOO85CC75 20C74424C74424C7442J8B45 OB89042,E6 FOGCOOOQS3EC 10EE 26C74424CT4424C744243B4E 083304240C080400401356SUB9IU1DVLEAMD7CALL JMF iimsvcrt.

35、sti-GEp TES7 EAZ, 3AJJUZ WHORT tewt. 0C4Q1 茁5_MDV DWORD m 亞:ESFP. t酢t.DElUD雌LEA EM.EfflOEC FTK SS: EBT-KMOV mD FT1 . ESTL E竝CALL j7U?, &nsv?r t. strnp/ TEST EAI, EU5H0EI test. 00401635ESP,PCEWOM FTE SS :tst. OOiOJaJSEEWLD加RD PTR S3 - EBP-30DVDKC m ss: CesfJ.ec00(AFjB4jMOY MOY woy Moyac om0604PTR SE : FTR SS:PTE SS:ESF4Cji虽SF甸ESF相t*zt.0040JUDBDWOEDEWOEBEWOEI E.IWOKD FTK S3: EBf DVOSI PTU SS; ESPI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论