




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.1程序破解首先编写一段程序,使得程序完成输入正确的用户名显示WELCONE,输入错误的用户名显示BYE,上图为程序展示的过程。通过 objdump d 20132201 的指令对执行文件进行反汇编,并且找到主函数中的相应的进行校验的位置,因为这个程序中需要进行字符串的比较,所以在比较字符串之后的跳转指令就是相应的该破解的位置,也就是说750e这条跳转指令就是对于输入字符串判定之后的响应,因此只要将这个跳转进行修改,就可以看到无论输入什么字符串均显示WELCOME;通过vi 20132201直接打开应用程序进行修改,打开之后会看到许多乱码,输入指令%!xxd将乱码变为16进制形式的显示。在16进制的显示中,找到之前的跳转指令750e,进行破解。图为打开之后的16进制显示:通过/750e指令,找到其在文件中的位置:为了使得输入错误的用户名仍然不会跳转到BYE,因此可以将oe改成00,即无论输入什么,都会跳转到下一行继续进行,就像输入正确不发生跳转一样,修改完后,输入:%!xxd r,会到了乱码页面,然后输入:wq!,会进行保存退出,修改后图如下:此时输入什么用户名都会显示welcome:4.2 ELF文件格式分析:可重定位目标文件结构:ELF头部.text.rodata.data.bss.sym.rel.txt.rel.data.line.debug.strtab节头部表在终端中键入hexdump -x lpj.o,会看到很多16进制编码。数据均为16进制数据(因为使用了-x选项),并且第一列为偏移地址。使用下面命令来显示elf.o中各个段相关信息:objdump x lpj.o输出结果如下:也可以用下面的命令来查看各个段信息:readelf -a lpj.o输出结果为:文件头分析:首先是Elf文件头,其定义为(在/usr/include/elf.h中)#define EI_NIDENT (16)typedef struct unsigned chare_identEI_NIDENT;/* Magic number and other info */ Elf32_Halfe_type;/* Object file type */ Elf32_Halfe_machine;/* Architecture */ Elf32_Worde_version;/* Object file version */ Elf32_Addre_entry;/* Entry point virtual address */ Elf32_Offe_phoff;/* Program header table file offset */ Elf32_Offe_shoff;/* Section header table file offset */ Elf32_Worde_flags;/* Processor-specific flags */ Elf32_Halfe_ehsize;/* ELF header size in bytes */ Elf32_Halfe_phentsize;/* Program header table entry size */ Elf32_Halfe_phnum;/* Program header table entry count */ Elf32_Halfe_shentsize;/* Section header table entry size */ Elf32_Halfe_shnum;/* Section header table entry count */ Elf32_Halfe_shstrndx;/* Section header string table index */ Elf32_Ehdr;大小为52个字节(16进制表示为0x34),因此elf.o前52个字节内容为ELF文件头,其二进制表示为:第一行分析:其前16个字节(第一行,对应e_identEI_NIDENT)实际表示内容为7f454c46010101000000000000000000,前四个字节7f454c46(0x45,0x4c,0x46是e,l,f对应的ascii编码)是一个魔数(magic number),表示这是一个ELF对象。接下来的一个字节01表示是一个32位对象,接下来的一个字节01表示是小端法表示,再接下来的一个字节01表示文件头版本。剩下的默认都设置为0。第二行分析:接下来(第二行)e_type(两个字节)值为0x0001,表示是一个重定位文件。e_machine(两个字节)值为0x0003,表示是intel80386处理器体系结构。e_version(四个字节)值为0x00000001,表示是当前版本。e_entry(四个字节)值为0x00000000,表示没有入口点。e_phoff(四个字节)值为0x00000000,表示没有程序头表。第三行分析:接下来(第三行)e_shoff(四个字节)值为0x00000118,表示段表的偏移地址。e_flags(四个字节)值为0x00000000,表示未知处理器特定标志(#define EF_SH_UNKNOWN 0x0)。e_ehsize(两个字节)值为0034,表示elf文件头大小(正好是52个字节)。e_phentsize(两个字节)和e_phnum(两个字节)的值均为0x0000,因为重定位文件没有程序头表。e_ehentsize(两个字节)值为0x0028表示段头大小为40个字节。第四行分析:接下来(第四行)e_shnum(两个字节)值为0x000d,表示段表入口有13个。e_shstrndx(两个字节)值为0x000a,表示段名串表的在段表中的索引号。段表(Section table)分析从0x00000118开始有13个段,每个段占40个字节大小。第一个段,其中内容全部为0,所以不表示任何段。内容如下:第二个段对应内容为:(.text段 偏移地址为0x34,段大小为0x17)段中每个成员均为4个字节,所以分析起来相对简单一些。 sh_name值为0x0000001f,它表示该段名称在.shstrtab中偏移量,通过计算可知该名称为.text。sh_type值为0x00000001(对应SHT_PROGBITS),表示这个段拥有程序所定义的信息,其格式和含义完全由该程序确定。sh_flags值为0x00000006(对应于SHF_ALLOC和SHF_EXECINSTR)。sh_addr值为0x00000000,表示这个段不会出现在进程的地址镜像中。sh_offset值为0x00000034(偏移地址),sh_size值为0x00000017,表示代码段大小为23(0x17)个字节。sh_link值为0x00000000,表示没有链接信息。sh_info值为0x00000000,表示没有辅助信息。sh_addalign值为0x00000004,表示4个字节对齐,sh_entsize值为0x00000000,表示没有入口。第三个段为:.rel.text(偏移:0x3ec 段大小:0x10)该段为.rel.text段,sh_type为0x00000009(对应SHT_REL),sh_offset为0x000003e4,sh_size为0x00000010(16个字节)。sh_link和sh_info分别为b和1,分别表示相关符号表索引和重定位应用段的段头索引。其余段的内容不再详细分析,可以自己分析并于前面readelf输出结果相对照。第四个段为:.data(段偏移:0x4c 大小:0)第五个段为:.bss(段偏移:0x4b 大小:0)第六个段为:.rodata(段偏移:0x4b 大小:0x06)第七个段为:.comment(段偏移:0x51 大小:0x2c)第八个段为: .note.GNU-Stack(段偏移:0x7d 大小:0)第九个段为:.eh_frame(段偏移:0x80 大小:0x38)第十个段为:rel.eh_frame(段偏移:0x3f4 大小:0x8).4.3字符分析:GB2312:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,这样我们就可以组合出大约7000多个简体汉字了。在这些编码里,我们还把数学符号、罗马希腊的字母、日文的假名们都编进去了,连在 ASCII 里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的全角字符,而原来在127号以下的那些就叫半角字符了。一个汉字算两个英文字符!一个汉字算两个英文字符GBK:不再要求低字节一定是127号之后的内码,只要第一个字节是大于127就固定表示这是一个汉字的开始,不管后面跟的是不是扩展字符集里的内容。结果扩展之后的编码方案被称为 GBK 标准,GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。GB18030:又加了几千个新的少数民族的字,GBK 扩成了 GB18030。中国的程序员们看到这一系列汉字编码的标准是好的,于是通称他们叫做 DBCS(Double Byte Charecter Set 双字节字符集)。在DBCS系列标准里,最大的特点是两字节长的汉字字符和一字节长的英文字符并存于同一套编码方案里,因此他们写的程序为了支持中文处理,必须要注意字串里的每一个字节的值,如果这个值是大于127的,那么就认为一个双字节字符集里的字符出现了。每个国家都搞出自己的一套编码,为了全世界的使用统一,于是有了。ISO (国际标谁化组织)的国际组织决定着手解决这个问题。他们打算叫它Universal Multiple-Octet Coded Character Set,简称 UCS, 俗称 UNICODE。UNICODE:ISO 就直接规定必须用两个字节,也就是16位来统一表示所有的字符,对于ascii里的那些“半角”字符,UNICODE 包持其原编码不变,只是将其长度由原来的8位扩展为16位,而其他文化和语言的字符则全部重新统一编码。由于半角英文符号只需要用到低8位,所以其高 8位永远是0,因此这种大气的方案在保存英文文本时会多浪费一倍的空间。他们的strlen函数靠不住了,一个汉字不再是相当于两个字符了,而是一个!是的,从 UNICODE 开始,无论是半角的英文字母,还是全角的汉字,它们都是统一的一个字符!同时,也都是统一的两个字节,“字节”是一个8位的物理存贮单元,而“字符”则是一个文化相关的符号。在UNICODE 中,一个字符就是两个字节。从 Windows NT 开始,MS 趁机把它们的操作系统改了一遍,把所有的核心代码都改成了用 UNICODE 方式工作的版本,从这时开始,WINDOWS 系统终于无需要加装各种本土语言系统,就可以显示全世界上所有文化的字符了。但是,UNICODE 在制订时没有考虑与任何一种现有的编码方案保持兼容,这使得 GBK 与UNICODE 在汉字的内码编排上完全是不一样的,没有一种简单的算术方法可以把文本内容从UNICODE编码和另一种编码进行转换,这种转换必须通过查表来进行。UNICODE 是用两个字节来表示为一个字符,他总共可以组合出65535不同的字符,这大概已经可以覆盖世界上所有文化的符号。如果还不够也没有关系,ISO已经准备了UCS-4方案,说简单了就是四个字节来表示一个字符,样我们就可以组合出21亿个不同的字符出来(最高位有其他用途),这大概可以用到银河联邦成立那一天吧!UNICODE 来到时,一起到来的还有计算机网络的兴起,UNICODE 如何在网络上传输也是一个必须考虑的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF8就是每次8个位传输数据,而UTF16就是每次16个位,只不过为了传输时的可靠性,从UNICODE到 UTF时并不是直接的对应,而是要过一些算法和规则来转换。在表中查找出英文字母ABCDEFGHIJKLMNOPQRSTUVWXYZ相对应的十六进制数值为:41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 51 52 53 54 55 56 57 58 5a在终端中输入命令:vim test.txt在vim页面输入命令:%!xxd之后按照如图所示输入十六进制输完之后使用命令:%!xxd -r保存后即可看到如下结果:退出vim编辑器,在终端输入命令:cat test.txt可以查看到test.txt中的内容1. gb2312编码由于相比ASCII码表gb2312明显复杂很多,就不列出所有编码,相关编码可从下面的网站中查阅:/gb2312在表中查找出英文字母20132201 李鹏举相对应的十六进制数值为:A3B2 A3B0 A3B1 A3B3 A3B2 A3B2 A3B0 A3B1 C0EE C5F4 BED9在进行vim编辑的时候,首先将终端的编码方式修改为gb2312,在终端上面的终端选项中进行修改,如图所示:修改之后使用命令locale-a|grepzh_CN查看当前拥有的中文字符集:如果没有gb2312,则使用命令sud
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46023.1-2025汽车用智能变色玻璃第1部分:有机电致变色玻璃
- 2025年物业管理师面试高频问题精解
- 2025年财务会计专员中级求职面试技巧与常见问题解析
- 2025年汽车维修技术员岗位技能测评试卷及答案解析
- 机票知识培训
- 2025年模特经纪人执业资格考试试题及答案解析
- 2025年家庭服务师初级笔试备考模拟题集
- 2025年交通规划师专业能力评估试题及答案解析
- 2025年建筑材料化验员职业资格考试试题及答案解析
- 2025年机动车驾驶教练员专业资格考试试题及答案解析
- 二年级上册语文课内阅读理解每日一练(含答案)
- 苏式彩画古建181班授课郭佩锦37课件讲解
- 2025-2030年中国功率器件市场发展趋势规划研究报告
- 基层管理培训课程
- 宇宙飞船的发射与回收技术分析
- 2025农村租地合同农村租地合同范本
- 2024考研 政治 思维导图(马原)
- 物业小区安全生产管理制度
- 高血压性脑出血中国多学科诊治指南2020
- 心肺复苏术课件2024新版
- 孕产妇危重症评审实施方案解读课件
评论
0/150
提交评论