-
-
[旧帖] [讨论]发现《加密与解密》书中代码的一个BUG 0.00雪花
-
发表于: 2014-9-6 22:50 1130
-
看雪第三版《加密与解密》449页
书中所给重定位表结构的设计是有问题的,因此449页最下边一行代码
“pRelocBufferMap = new char[nRelocSize]”,这样分配空间是不够严谨。
具体原因在于重定位结构中nNewItemOffset字段的定义,当相邻两项大于0xff,所给代码就认为是本段重定位数据第一项(450页代码部分),就会建立新的数据头,由如下方程可知:
8 + 4x = (1 + 4) * x
当x的值大于8时会造成pRelocBufferMap内存溢出。
449页截图:
ps: 如有不对的地方请轻喷,求一个邀请码,一边更好滴学习。
初学加壳,看了罗云彬Win32汇编学习了PE结构,然后准备看《加密与解密》照着书中代码用C++写一个简单的壳,大四软件工程专业要求自选题目完成一个程序作业,我就定了这个,老师说这个题目不太合适,信息安全的同学做这个比较适合,但我因为兴趣还是坚持了做这个,不知道现在开始学破解与反破解是不是有点晚了,也不知道现在学这个对以后找工作有没有帮助,就只是因为兴趣
书中所给重定位表结构的设计是有问题的,因此449页最下边一行代码
“pRelocBufferMap = new char[nRelocSize]”,这样分配空间是不够严谨。
具体原因在于重定位结构中nNewItemOffset字段的定义,当相邻两项大于0xff,所给代码就认为是本段重定位数据第一项(450页代码部分),就会建立新的数据头,由如下方程可知:
8 + 4x = (1 + 4) * x
当x的值大于8时会造成pRelocBufferMap内存溢出。
449页截图:
ps: 如有不对的地方请轻喷,求一个邀请码,一边更好滴学习。
初学加壳,看了罗云彬Win32汇编学习了PE结构,然后准备看《加密与解密》照着书中代码用C++写一个简单的壳,大四软件工程专业要求自选题目完成一个程序作业,我就定了这个,老师说这个题目不太合适,信息安全的同学做这个比较适合,但我因为兴趣还是坚持了做这个,不知道现在开始学破解与反破解是不是有点晚了,也不知道现在学这个对以后找工作有没有帮助,就只是因为兴趣
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
看原图
赞赏
雪币:
留言: