摘要: 1. 全局变量通过函数初始化 初始化时机在main函数之前,对于VC6,具体来说是在mainCRTStartup -> _cinit -> 第2个_initterm中。此函数接收2个参数,通过遍历,找到函数指针并调用。逆向时找到push两个参数的地方,以这2个参数作为地址的上下边界,寻找其中非0的值 阅读全文
posted @ 2021-01-05 15:00 八转达人 阅读(538) 评论(0) 推荐(0) 编辑
摘要: 1. x87浮点指令: 相当于栈结构,st(0)是栈顶。 __asm { fld flt1 //float load fld flt2 fadd st(0), st(1) //float add faddp st(1), st(0) //float add and pop 结果加到st(1)中,之后 阅读全文
posted @ 2021-01-05 14:57 八转达人 阅读(480) 评论(0) 推荐(0) 编辑
摘要: 1. 全局变量 全局变量访问方式是立即数间接访问 普通全局变量和const全局常量分布在不同的内存分页中,satic全局变量和普通全局变量没有区别: const int g_nTest1 = 123; int g_nTest2 = 456; static int g_nTest3 = 789; in 阅读全文
posted @ 2021-01-05 14:56 八转达人 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 1. case分支个数小于等于3时,有多个sub,jz引导代码,它们之间没有具体代码,这是和if结构的区别。 release版的defalut紧随其后: debug版是jmp到default: 2. case分支间隔较为均匀时,所有跳转地址组成表,通过下标jmp到对应的地址。 3. case分支间隔 阅读全文
posted @ 2021-01-05 14:54 八转达人 阅读(70) 评论(0) 推荐(0) 编辑