123456

 

2012年4月6日

OllyDbg

摘要: 1.按F9运行程序,2.ctrl+G打开跟随表达式窗口,输入的Api大小写敏感,函数名大小写必须正确3.Alt+B打开断点窗口,Always表示断点激活状态,Disable表示断点停用,按空格键可切换状态4.Alt+n打开输入输出表,Alt+C回到主窗口5.Alt+F9回到调用函数的地方.6.API函数基本采用_stdcall调用约定,参数按从右到左入栈,由被调用者清理栈中参数,返回值放在eax寄存器中,因此对API要分析其前的PUSH指令,这些指令将参数放进堆栈以传送给API调用,C代码中的子程序采用C调用约定,同线参数按从右到左入栈,由调用者清理栈中的参数。7.int3指令,机器码是CCH 阅读全文

posted @ 2012-04-06 12:04 hgy413 阅读(159) 评论(0) 推荐(0) 编辑

函数的参数

摘要: 函数传参有三种方式:堆栈方式,寄存器方式,以及通过全局变量进行隐含参数的传递1.堆栈方式:约定类型__cdecl(C规范)PASCALstdcallFastcall参数传递顺序从右到左从左到右从右到左使用寄存器和堆栈平衡堆栈者调用者子程序子程序子程序允许使用VARARG(不定参数)是否是c/c++和MFC程序默认使用调用约定__cdeclstdcall是Win32 API采用的约定方式,由于函数体本身知道传进来的参数个数,因此被调用的函数可以在返回前用ret n清理传送参数的内存栈,所以test(p1,p2,p3)__cdecl调用约定PASCAL调用约定__stdcall调用约定push p 阅读全文

posted @ 2012-04-06 11:57 hgy413 阅读(131) 评论(0) 推荐(0) 编辑

导航