中国科技大学计算机系:《黑客反向工程》课程教学资源(PPT课件讲稿)通过不同途径搜索密码比较算法和实际破解例

汇编插入语句 ■汇编语言编程很困难.求两个数的和比较容易,但对于 输入输出等非常困难. ■要了解处理器结构和操作系统,很复杂 ■汇编插入语句可以在熟悉的环境里进行 2022/11/8 Chen Kaiming Copyright 2007
2022/11/8 Chen Kaiming Copyright 2007 1 ■汇编语言编程很困难. 求两个数的和比较容易,但对于 输入输出等非常困难. ■要了解处理器结构和操作系统,很复杂 ■ 汇编插入语句可以在熟悉的环境里进行. 汇编插入语句

最简单的汇编插入语句形式(求两个数之和) main() int a=1: /声明变量a并赋值为1 int b=2; /1声明变量b并赋值为2 int c; /声明变量c,不对它进行初始化 //汇编插入语句的开始位置 -asm( MOV EAX,a 将变量a的值加载到EAX寄存器 MOV EBX,b:将变量b的值加载到EBX寄存器 ADD EAX, EBX;EAX与EBX相加,并将结果写入EAX MOC C, EAX将EAX的值传送到变量C /汇编插入语句的结束位置 //用常用的c语言函数printf输出 //变量c的值 printf("a+b=8x+号x-号xn",a,b,c): 2022/11/8 Chen Kaiming Copyright 2007
2022/11/8 Chen Kaiming Copyright 2007 2

方法:直接在内存中搜索用户输入的密码 ■由于各种复杂的原因,密码不可能会放在很容易找到的 地方,同时程序中也有非常多的字特串都很像密码串。 ■想法: 搜索原始密码很难,搜索用户输入的密码应该简单。 2022/11/8 Chen Kaiming Copyright 2007
2022/11/8 Chen Kaiming Copyright 2007 3 ■由于各种复杂的原因, 密码不可能会放在很容易找到的 地方, 同时程序中也有非常多的字符串都很像密码串。 ■想法: 搜索原始密码很难,搜索用户输入的密码应该简单。 方法1: 直接在内存中搜索用户输入的密码

方法:直接在内存中搜索用户输入的密码 ■工作过程: idag 运行程序。 输入“KPNC Kaspersky" 转idag调试方式,搜索XPNC Kaspersky字待 串。可找出多个位置,分析选择可能性最大的一个。 在相应位置处004295E0中设置断点 然后重新启动idag运行。 断点设置在检测调用语句之后的指令上。 退出匹配的进程/修正丁MP指令以及. 2022/11/8 Chen Kaiming Copyright 2007
2022/11/8 Chen Kaiming Copyright 2007 4 ■工作过程: idag 运行 程序。 输入“ KPNC Kaspersky” 转idag 调试方式, 搜索KPNC Kaspersky 字符 串。可找出多个位置,分析选择可能性最大的一个。 在相应位置处004295E0中设置断点 然后重新启动idag 运行。 断点设置在检测调用语句之后的指令上。 退出匹配的进程/修正JMP指令以及…… 方法1: 直接在内存中搜索用户输入的密码

输入密码的程序 for(;; { printf("Enter password:") fgets(&buff[O],PASSWORD_SIZE,stdin): if(strcmp(&buff[O],PASSWORD)) /"中斥"密码不匹配 printf("Wrong password\n"); else break; if (++count>3)return-1; 2022/11/8 Chen Kaiming Copyright 2007 5
2022/11/8 Chen Kaiming Copyright 2007 5 for( ; ; ) { printf("Enter password: "); fgets(&buff[0] , PASSWORD_SIZE, stdin); if (strcmp( &buff[0] , PASSWORD)) // "申斥"密码不匹配 printf("Wrong password\n"); else break; if (++count>3) return -1; } 输入密码的程序

输入密码程序的分析 ■分析: 用户提供的密码被放在buf仟缓冲区并与参照密码比 较,如果不匹配,那么,需要从用户那里再次请求提供密 码. ■第二次输入前不清除buff. 依次类推,到达接受Wrong password执行分支,使用 调试器,进行搜索,就会找到. 2022/11/8 Chen Kaiming Copyright 2007
2022/11/8 Chen Kaiming Copyright 2007 6 ■分析: 用户提供的密码被放在 buff 缓冲区 并与参照密码比 较,如果不匹配, 那么需要从用户那里再次请求提供密 码. ■第二次输入前不清除 buff. 依次类推, 到达接受Wrong password 执行分支, 使用 调试器, 进行搜索, 就会找到. 输入密码程序的分析

实验和验证 执行list1p7.exe 输入密码:chenkaiming ●00425A30 iob dd offset bufin ●00425A30 "chenkaiming \n\n" 00425A38 dd offset_bufin "chenkaiming\n\n" (00425A38不合题意,舍去) 2022/11/8 Chen Kaiming Copyright 2007 7
2022/11/8 Chen Kaiming Copyright 2007 7 实验和验证 执行 list1_p7.exe 输入密码: chenkaiming ⚫ 00425A30 _iob dd offset _bufin ⚫ 00425A30 "chenkaiming\n\n" ⚫ 00425A38 dd offset _bufin "chenkaiming\n\n" ( 00425A38 不合题意, 舍去)

■搜索立即数 0x00425A30得两处: 00401042 push offset_iob 00401047 push 64h /最大密码长度 00401049 lea eax,[ebp+var_68]/密码缓冲区指针 0040104C push eax 0040104D call fgets 00401052 add esp,OCh //弹出三个参数 00401055 push "myGOODpassword\n" 0040105A lea ecx,[ebp+var_68] 0040105D push ecx 0040105E call strcmp 00401063 add esp,8 00401066 test eax,eax 00401068 jz short loc_401079 0040106A push offset@;"Wrong password\n" 0040106F call printf 2022/11/8 Chen Kaiming Copyright 2007
2022/11/8 Chen Kaiming Copyright 2007 8 ■搜索立即数 0x00425A30 得两处: 00401042 push offset _iob 00401047 push 64h //最大密码长度 00401049 lea eax, [ebp+var_68] // 密码缓冲区指针 0040104C push eax 0040104D call fgets 00401052 add esp, 0Ch //弹出三个参数 00401055 push "myGOODpassword\n" 0040105A lea ecx, [ebp+var_68] 0040105D push ecx 0040105E call strcmp 00401063 add esp, 8 00401066 test eax, eax 00401068 jz short loc_401079 0040106A push offset@ ; "Wrong password\n" 0040106F call printf

方法2在密码输入函数上没置断点 void CCrackme_01Dlg::OnOk( { char buff[PASSWORD_SIZE]; CEdit m_password; m_password.GetWindowTextA(&buff[O] PASSWORD_SIZE); if(strcmp(&buff[O],PASSWORD)) { printf("Wrong Password"); m_password.SetSel(O,-1,0) return; } else printf("Password OK"): CDialog::OnOK(); } 2022/11/8 Chen Kaiming Copyright 2007
2022/11/8 Chen Kaiming Copyright 2007 9 方法2 在密码输入函数上设置断点 void CCrackme_01Dlg::OnOk() { char buff[PASSWORD_SIZE]; CEdit m_password; m_password.GetWindowTextA(&buff[0], PASSWORD_SIZE); if (strcmp(&buff[0], PASSWORD)) { printf("Wrong Password"); m_password.SetSel(0,-1,0); return; } else { printf("Password OK"); } CDialog::OnOK(); }

方法2在密码输入函数上没置断点 void CCrackme_01Dlg::OnOk( { char buff[PASSWORD_SIZE]: CEdit m_password; m_password.GetWindowTextA(&buff[O] PASSWORD_SIZE): if(strcmp(&buff[O],PASSWORD)) { printf("Wrong Password"); m_password.SetSel(0,-1,0): return; } else printf("Password OK"): CDialog::OnOK(); } 2022/11/8 Chen Kaiming Copyright 2007 10
2022/11/8 Chen Kaiming Copyright 2007 10 方法2 在密码输入函数上设置断点 void CCrackme_01Dlg::OnOk() { char buff[PASSWORD_SIZE]; CEdit m_password; m_password.GetWindowTextA(&buff[0], PASSWORD_SIZE); if (strcmp(&buff[0], PASSWORD)) { printf("Wrong Password"); m_password.SetSel(0,-1,0); return; } else { printf("Password OK"); } CDialog::OnOK(); }
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 中国科技大学计算机系:《黑客反向工程》课程教学资源(PPT课件讲稿)破解和混合编程实例 Hacker Reverse Engineering.ppt
- 中国科技大学计算机系:《黑客反向工程》课程教学资源(PPT课件讲稿)黑客反向工程导论(陈凯明).ppt
- 中国科技大学计算机系:《黑客反向工程》课程教学资源(PPT课件讲稿)防黑客技术简介(基本的”防”黑客技术 Basic Hacker Technique).ppt
- 中国科技大学计算机系:《黑客反向工程》课程教学资源(作业习题)历年黑客反向工程作业题目选编.docx
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(PPT课件讲稿)进程.ppt
- 山东大学:《化工制图》课程教学资源(PPT讲稿)第十二章 计算机绘图软件简介.pptx
- 成都东软学院:《嵌入式系统原理与接口技术》课程教学资源(PPT课件讲稿)第5章 ARM接口设计技术(杨宗德).ppt
- 《Autodesk AutoCAD 2004》课程教学资源:PPT课件讲稿(前11章).ppt
- 西安电子科技大学:神经网络与模糊系统(PPT讲稿)Neural Networks & Fuzzy System.ppt
- 高等学校计算机应用规划教材:《HTML5+CSS3 网页设计基础教程》教学资源(PDF电子书)第1章 Web开发新时代.pdf
- 高等学校计算机应用规划教材:《SQL Server 2019 数据库教程》教学资源(PDF电子书)第1章 数据库基础.pdf
- 北京大学:《数据分析工具和实践》课程教学资源(讲稿)10 课程复习(二).pdf
- 北京大学:《数据分析工具和实践》课程教学资源(讲稿)09 ggplot2画图(二).pdf
- 北京大学:《数据分析工具和实践》课程教学资源(讲稿)08 ggplot2画图(一).pdf
- 北京大学:《数据分析工具和实践》课程教学资源(讲稿)07 R基本图形(二).pdf
- 北京大学:《数据分析工具和实践》课程教学资源(讲稿)06 R基本图形(一).pdf
- 北京大学:《数据分析工具和实践》课程教学资源(讲稿)05 课程复习(一).pdf
- 北京大学:《数据分析工具和实践》课程教学资源(讲稿)04 R编程结构.pdf
- 北京大学:《数据分析工具和实践》课程教学资源(讲稿)03 R数据对象(二).pdf
- 北京大学:《数据分析工具和实践》课程教学资源(讲稿)02 R数据对象(一).pdf
- 中国科技大学计算机系:《黑客反向工程》课程教学资源(PPT课件讲稿)区块链简介(区块链详解).ppt
- 中国科技大学计算机系:《黑客反向工程》课程教学资源(PPT课件讲稿)注入攻击与防御(SQL攻击与防御).ppt
- 清华大学出版社:安全技术经典译丛(美)Justin Clarke《SQL注入攻击与防御》PDF电子书(SQL Injection Attacks and Defense).pdf
- 电子工业出版社:“十一五”国家重点图书出版规划项目(安全技术大系)《黑客反汇编揭密》PDF电子书(【俄】Kris Kaspersky,第二版,共四篇二十一章).pdf
- 银川能源学院:数据科学与大数据技术专业剖析(曹骜).pdf
- 《嵌入式系统及应用》课程教学资源(参考资料)实验用开发板手册 APP009(manual)dsPIC30F4011/4012/2010 Motor Control Family Evaluation Board.pdf
- 《嵌入式系统及应用》课程教学资源(参考资料)Microchip dsPIC30F 系列参考手册(高性能数字信号控制器).pdf
- 《嵌入式系统及应用》课程教学资源(参考资料)Microchip dsPIC 语言工具入门.pdf
- 《嵌入式系统及应用》课程教学资源(参考资料)Microchip dsPIC30F 4011_4012 数据手册(高性能16位数字信号控制器).pdf
- 《嵌入式系统及应用》课程教学资源(参考资料)Microchip dsPIC30F 数字信号控制器入门用户指南.pdf
- 《嵌入式系统及应用》课程教学资源(参考资料)Microchip dsPIC30F33F 程序员参考手册(高性能数字信号控制器).pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)MCAI1.0 演示实验.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)多媒体素材制作实验.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)视频编辑实验.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)MCI 接口编程实验.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)WAVE 文件格式分析实验.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)基于 WindowsAPI 的视频捕捉卡操作.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)基于 SDK 的视频压缩卡操作.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)DirectXDraw 实验.pdf
- 中国科学技术大学:《多媒体技术基础》课程教学资源(实验参考内容)JPEG 静图像压缩实验.pdf