欢迎来到天天文库
浏览记录
ID:22280972
大小:759.68 KB
页数:9页
时间:2018-10-28
《实验3调试技术在逆向工程中的应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验3调试技术在逆向工程中的应用3.1实验目的通过调试一个在Windows下编译的小的C语言控制台程序,掌握H)A调试器的主要功能。2.2实验步骤及内容2.1.1输入程序并编译这个小程序只是简单的计算丫一下一组数据(1,2,34,5)的平均值。这组数据被保存在两个数组里,一个是8bit的数值,一个是32bit数值衮示。includecharchar一average(chararray[],intcount){inti;charaverage;average=0;for(i=0;i2、t;returnaverage;}intint_average(intarray[】,intcount){inti,average;average=0;for(i=0;i3、verage=%d”,int_average(integers,sizeof(integers)));}观察运行结果:chars[]-average=3integers!]-average=1054228(该值在不同机器上会有所不同〉可以肴出在整数方式卜3十算的结果是错误的,我们川IDA的调试器來分析一丁吧。2.2.2装入文件调试器被完美地集成在IDA中,首先我们使用IDA装入文件,来生成数据库,用户可以使用反汇编功能,所有反汇编的信息,均可以在调试器中使用。如果反汇编的文件被调试器正确识别,调试器的菜单将自动出现在IDA的主窗口中。(V)5(o)窗a(w)苒调试器窗□(!?4、)断点(B)娜(W)腿(G)>StartprocessF9附测逬程(A)…逬…5、6、暂轍程(P)■终碰程COCtrl+F2从逬程中分离(H)抓取内存快照(M)卽单步步入(I)F70)单步步过(V)F8执行到返固Ctrl+F7說执行到光杨处(C)F4•凋试…切換调试器(E)…/■/View-.iera(bybytidvjoiduoiduoieb7、eb8、es9、eb:2.2.3指令断点text:004010C6text:084010C81text:004010CFtext:004010D6text:004010D8text:004010D8text:004010D8text:00401010、D8procnearCODEXREF.text:80401的0auerage=duordptr-8.text:00401的0=duordptr-4.text:004610B0array=duordptr8.text:084010B0count=duordptrOCh.text:00401OB02.根据对函教的识别,和局部变是重命1.text:004010B0pushebp.text:004018B1便于跟踪调试nouebp,esp.text:00401的3subesp,48h.text:00401的6pushebx.text:004010B7pushesi.text:00401的11、8pushedi.text:004010B9leaedi,[ebp+uar_48].text:004010BCnouecx,12h.text:004010C1noueax9OCCCCCCCChtext:⑽401的0intaueragetext:004010B0"text:004010BOuar48byteptr-48hrepstosdN重銘(N)f编辑國数(E)...毓(H)0图形视图(Z)X職转接(u)SynchronizewithNAlt+PNum-U0Q0010C8Q040KF2[ebp+auerage],0[ebp+i],0shortloc4010E1eax,[ebp+i12、];CODEXREF:首先我们在反汇编窗门中找到/nf_average(7这个函数,我们在程序前导部分(指程序开始的一些初始化等)的后面不断点,可以使用右键菜单巾的冶cWSreakpo/nf的命令,或使川快捷键F2。2.2.4程序运行LocalWin32debugger▼.text:00401067pushesi•.text:004010B8pushedi.text:004010B9leaedi9[ebp*uar48]•.text:00401OBCnouecx,12h•.text
2、t;returnaverage;}intint_average(intarray[】,intcount){inti,average;average=0;for(i=0;i3、verage=%d”,int_average(integers,sizeof(integers)));}观察运行结果:chars[]-average=3integers!]-average=1054228(该值在不同机器上会有所不同〉可以肴出在整数方式卜3十算的结果是错误的,我们川IDA的调试器來分析一丁吧。2.2.2装入文件调试器被完美地集成在IDA中,首先我们使用IDA装入文件,来生成数据库,用户可以使用反汇编功能,所有反汇编的信息,均可以在调试器中使用。如果反汇编的文件被调试器正确识别,调试器的菜单将自动出现在IDA的主窗口中。(V)5(o)窗a(w)苒调试器窗□(!?4、)断点(B)娜(W)腿(G)>StartprocessF9附测逬程(A)…逬…5、6、暂轍程(P)■终碰程COCtrl+F2从逬程中分离(H)抓取内存快照(M)卽单步步入(I)F70)单步步过(V)F8执行到返固Ctrl+F7說执行到光杨处(C)F4•凋试…切換调试器(E)…/■/View-.iera(bybytidvjoiduoiduoieb7、eb8、es9、eb:2.2.3指令断点text:004010C6text:084010C81text:004010CFtext:004010D6text:004010D8text:004010D8text:004010D8text:00401010、D8procnearCODEXREF.text:80401的0auerage=duordptr-8.text:00401的0=duordptr-4.text:004610B0array=duordptr8.text:084010B0count=duordptrOCh.text:00401OB02.根据对函教的识别,和局部变是重命1.text:004010B0pushebp.text:004018B1便于跟踪调试nouebp,esp.text:00401的3subesp,48h.text:00401的6pushebx.text:004010B7pushesi.text:00401的11、8pushedi.text:004010B9leaedi,[ebp+uar_48].text:004010BCnouecx,12h.text:004010C1noueax9OCCCCCCCChtext:⑽401的0intaueragetext:004010B0"text:004010BOuar48byteptr-48hrepstosdN重銘(N)f编辑國数(E)...毓(H)0图形视图(Z)X職转接(u)SynchronizewithNAlt+PNum-U0Q0010C8Q040KF2[ebp+auerage],0[ebp+i],0shortloc4010E1eax,[ebp+i12、];CODEXREF:首先我们在反汇编窗门中找到/nf_average(7这个函数,我们在程序前导部分(指程序开始的一些初始化等)的后面不断点,可以使用右键菜单巾的冶cWSreakpo/nf的命令,或使川快捷键F2。2.2.4程序运行LocalWin32debugger▼.text:00401067pushesi•.text:004010B8pushedi.text:004010B9leaedi9[ebp*uar48]•.text:00401OBCnouecx,12h•.text
3、verage=%d”,int_average(integers,sizeof(integers)));}观察运行结果:chars[]-average=3integers!]-average=1054228(该值在不同机器上会有所不同〉可以肴出在整数方式卜3十算的结果是错误的,我们川IDA的调试器來分析一丁吧。2.2.2装入文件调试器被完美地集成在IDA中,首先我们使用IDA装入文件,来生成数据库,用户可以使用反汇编功能,所有反汇编的信息,均可以在调试器中使用。如果反汇编的文件被调试器正确识别,调试器的菜单将自动出现在IDA的主窗口中。(V)5(o)窗a(w)苒调试器窗□(!?
4、)断点(B)娜(W)腿(G)>StartprocessF9附测逬程(A)…逬…
5、
6、暂轍程(P)■终碰程COCtrl+F2从逬程中分离(H)抓取内存快照(M)卽单步步入(I)F70)单步步过(V)F8执行到返固Ctrl+F7說执行到光杨处(C)F4•凋试…切換调试器(E)…/■/View-.iera(bybytidvjoiduoiduoieb
7、eb
8、es
9、eb:2.2.3指令断点text:004010C6text:084010C81text:004010CFtext:004010D6text:004010D8text:004010D8text:004010D8text:004010
10、D8procnearCODEXREF.text:80401的0auerage=duordptr-8.text:00401的0=duordptr-4.text:004610B0array=duordptr8.text:084010B0count=duordptrOCh.text:00401OB02.根据对函教的识别,和局部变是重命1.text:004010B0pushebp.text:004018B1便于跟踪调试nouebp,esp.text:00401的3subesp,48h.text:00401的6pushebx.text:004010B7pushesi.text:00401的
11、8pushedi.text:004010B9leaedi,[ebp+uar_48].text:004010BCnouecx,12h.text:004010C1noueax9OCCCCCCCChtext:⑽401的0intaueragetext:004010B0"text:004010BOuar48byteptr-48hrepstosdN重銘(N)f编辑國数(E)...毓(H)0图形视图(Z)X職转接(u)SynchronizewithNAlt+PNum-U0Q0010C8Q040KF2[ebp+auerage],0[ebp+i],0shortloc4010E1eax,[ebp+i
12、];CODEXREF:首先我们在反汇编窗门中找到/nf_average(7这个函数,我们在程序前导部分(指程序开始的一些初始化等)的后面不断点,可以使用右键菜单巾的冶cWSreakpo/nf的命令,或使川快捷键F2。2.2.4程序运行LocalWin32debugger▼.text:00401067pushesi•.text:004010B8pushedi.text:004010B9leaedi9[ebp*uar48]•.text:00401OBCnouecx,12h•.text
此文档下载收益归作者所有