逆向分析一个完整的c++程序包含寄存器与参数传递详解

上传人:bin****86 文档编号:49705060 上传时间:2018-08-01 格式:DOC 页数:4 大小:68KB
返回 下载 相关 举报
逆向分析一个完整的c++程序包含寄存器与参数传递详解_第1页
第1页 / 共4页
逆向分析一个完整的c++程序包含寄存器与参数传递详解_第2页
第2页 / 共4页
逆向分析一个完整的c++程序包含寄存器与参数传递详解_第3页
第3页 / 共4页
逆向分析一个完整的c++程序包含寄存器与参数传递详解_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《逆向分析一个完整的c++程序包含寄存器与参数传递详解》由会员分享,可在线阅读,更多相关《逆向分析一个完整的c++程序包含寄存器与参数传递详解(4页珍藏版)》请在金锄头文库上搜索。

1、cucci 女包、香奈儿包包、爱马仕包包:|冬装外套、冬装女装、时尚冬装: gucci 包、酷奇包包、金利来女包:|皮草外套、水貂皮草、皮草大衣: www.qqxk.org逆向分析一个完整的 C+程序包含寄存器与参数传递详解 最近在分析 C+ dump 文件的时候觉得有必要将一些必要的反汇编东西总结一下以备别人 参考,自己有时间的时候也可以进行更多的改进。下面通过一个简单的 C+代码转成汇编 代码后的详细解释说明一下 C+和汇编的对应关系,以及如何识别汇编代码中进行的一些 操作的意义。代码的调用关系如下图所示:完整 C+代码下:int InternalFunctionA(int nSizeA1

2、, int nSizeA2) int localnSizeA1 = nSizeA1; int localnSizeA2 = nSizeA2;int nFunctionA = localnSizeA1 + localnSizeA2;return nFunctionA; int InternalFunctionB(int nSizeB1, int nSizeB2) int nFunctionA = InternalFunctionA(nSizeB1, nSizeB2); return 0; cucci 女包、香奈儿包包、爱马仕包包:|冬装外套、冬装女装、时尚冬装: gucci 包、酷奇包包、金利来

3、女包:|皮草外套、水貂皮草、皮草大衣: www.qqxk.orgint _tmain(int argc, _TCHAR* argv) int nFunctionVal = InternalFunctionB(36, 64); cout (411163h) 004115B6 add esp,8 004115B9 mov ecx,eax 004115BB call dword ptr _imp_std:basic_ostream :operator cucci 女包、香奈儿包包、爱马仕包包:|冬装外套、冬装女装、时尚冬装: gucci 包、酷奇包包、金利来女包:|皮草外套、水貂皮草、皮草大衣: w

4、ww.qqxk.org(41A320h) 004115C1 cmp esi,esp 004115C3 call ILT+430(_RTC_CheckEsp) (4111B3h) return 0; 004115C8 xor eax,eax 004115CA pop edi /恢复 edi 004115CB pop esi /恢复 esi 004115CC pop ebx /恢复 ebx 004115CD add esp,0CCh /栈顶上移 004115D3 cmp ebp,esp /检查栈平衡 004115D5 call ILT+430(_RTC_CheckEsp) (4111B3h) 00

5、4115DA mov esp,ebp /恢复上一个栈帧的 ebp,esp 004115DC pop ebp 004115DD ret/函数返回另外两层函数调用的汇编代码如下,感兴趣的读者可以对比一下,和 main 函数的过程相似,int InternalFunctionA(int nSizeA1, int nSizeA2) 004114C0 push ebp 004114C1 mov ebp,esp 004114C3 sub esp,0E4h 004114C9 push ebx 004114CA push esi 004114CB push edi 004114CC lea edi,ebp-0

6、E4h 004114D2 mov ecx,39h 004114D7 mov eax,0CCCCCCCCh 004114DC rep stos dword ptr es:edi int localnSizeA1 = nSizeA1; 004114DE mov eax,dword ptr nSizeA1 004114E1 mov dword ptr localnSizeA1,eax int localnSizeA2 = nSizeA2; 004114E4 mov eax,dword ptr nSizeA2 004114E7 mov dword ptr localnSizeA2,eax int nF

7、unctionA = localnSizeA1 + localnSizeA2; 004114EA mov eax,dword ptr localnSizeA1 004114ED add eax,dword ptr localnSizeA2 004114F0 mov dword ptr nFunctionA,eax cucci 女包、香奈儿包包、爱马仕包包:|冬装外套、冬装女装、时尚冬装: gucci 包、酷奇包包、金利来女包:|皮草外套、水貂皮草、皮草大衣: www.qqxk.orgreturn nFunctionA; 004114F3 mov eax,dword ptr nFunctionA

8、 004114F6 pop edi 004114F7 pop esi 004114F8 pop ebx 004114F9 mov esp,ebp 004114FB pop ebp 004114FC ret int InternalFunctionB(int nSizeB1, int nSizeB2) 00411510 push ebp 00411511 mov ebp,esp 00411513 sub esp,0CCh 00411519 push ebx 0041151A push esi 0041151B push edi 0041151C lea edi,ebp-0CCh 00411522

9、 mov ecx,33h 00411527 mov eax,0CCCCCCCCh 0041152C rep stos dword ptr es:edi int nFunctionA = InternalFunctionA(nSizeB1, nSizeB2); 0041152E mov eax,dword ptr nSizeB2 00411531 push eax 00411532 mov ecx,dword ptr nSizeB1 00411535 push ecx 00411536 call InternalFunctionA (411140h) 0041153B add esp,8 004

10、1153E mov dword ptr nFunctionA,eax return 0; 00411541 xor eax,eax 00411543 pop edi 00411544 pop esi 00411545 pop ebx 00411546 add esp,0CCh 0041154C cmp ebp,esp 0041154E call ILT+430(_RTC_CheckEsp) (4111B3h) 00411553 mov esp,ebp 00411555 pop ebp 00411556 ret总结:通过这几篇文章的总结,相信大家已经可以看懂一些常规的 C+反汇编代码,应该 可以对付一般的应用,如果大家还有什么问题,或者建议欢迎讨论。cucci 女包、香奈儿包包、爱马仕包包:|冬装外套、冬装女装、时尚冬装: gucci 包、酷奇包包、金利来女包:|皮草外套、水貂皮草、皮草大衣: www.qqxk.org

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号