C++中内存分成5个区分别为栈.PPTVIP

  • 7
  • 0
  • 约7.05千字
  • 约 30页
  • 2018-11-22 发布于天津
  • 举报
C中内存分成5个区分别为栈

黑客反向工程预备知识 ■常用汇编语言(机器)指令 ■寄存器的用途 ■堆栈---常用概念介绍 ■中断调用 ■处理器文档资料: www.I? * chenkm@ 0551-3602824 * 课程说明(2) 2.教材和参考文献 黑客反向工程(第二版),卡巴斯基, 各种相关文献或学术文章 3. 考试或考查 一次正式课堂汇报(ppt+报告不超过30分钟,70%) 平时发言或报告或点名 30% /~chenkm * * chenkm@ * * chenkm@ * * chenkm@ * * chenkm@ * * chenkm@ * * chenkm@ * * chenkm@ * * chenkm@ * * chenkm@ * * chenkm@ * * chenkm@ chenkm@ 0551-3602824 chenkm@ 0551-3602824 chenkm@ 0551-3602824 破解和混合编程实例 Hacker Reverse Engineering ■ 创建一个最简单的保护机制并破解它; ■ 选一个实例, 在此基础上学习十六进制编辑器, API窥测器 与 反汇编器(IDA Pro) ■ 破解一个实际的例子 * chenkm@ 0551-3602824 * 自定义保护机制,并尝试破解 最简单的密码保护算法: 密码存放位置: 程序中/ 配置文件/注册表 密码保护措施: 无 if (strcmp(password entered, reference password)) { /* 密码不正确 */ } else { /* 密码正确 */ } * chenkm@ 0551-3602824 * 自定义保护机制,并尝试破解 Protect_password #define legal_psw my.good.password int main() { char user_psw[666]; cout “crackme 00h\n enter password: “; cin user_psw; if (strcmp(legal_psw, user_psw)) cout“wrong password\n”; // “标记密码不匹配 * chenkm@ 0551-3602824 * 黑客反向工程热身 黑客反向工程热身 else cout “password ok\nhello ,legal user|\n “; //“标记”密码匹配 return 0; } * chenkm@ 0551-3602824 * // 申斥密码不匹配 // 申斥密码不匹配 // 申斥密码不匹配 * chenkm@ 0551-3602824 * 自动过滤上述程序二进制内容结果 00007d11: LCMapStringW 00007d1f: kernel32.dll 0000805c: crackme 00h 0000806a: enter passwd: 0000807d: my.good.password 0000808f: wrong password 0000809c: password ok 000080af: hello, legal user! 000080c2: .?Avios@@ 000080de: .?Avistream@@ ………… 结果分析 * chenkm@ 0551-3602824 * 黑客反向工程热身 编译后的程序执行 □猜测密码---凭运气,难度大 □分析程序的组成 代码 …… 数据(密码字符串) * chenkm@ 0551-3602824 * 黑客反向工程热身 ■ data: 数据段 rdata: 只读数据, 字符串文字和常量. 如本程序中的 myGOODpassword\n“。 bss: 未初始化数据, 比如函数和静态变量。 idata: 包括导入库和导入地址名称表。 edata:包含了应用程序或DLL的导出数据。 ■ text(code): 代码段。 * chenkm@ 0551-360282

文档评论(0)

1亿VIP精品文档

相关文档