Python中文
首页
教程
问答
标签
搜索
登录
注册
Python中bytes对象上的项分配
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>唉,代码不工作真是糟糕的代码!</p> <blockquote> <p>in RemoveRETNs toOutput[currentLoc - 0x00400000] = b'\xCC' TypeError: 'bytes' object does not support item assignment</p> </blockquote> <p>我如何解决这个问题:</p> <pre><code>inputFile = 'original.exe' outputFile = 'output.txt' patchedFile = 'original_patched.exe' def GetFileContents(filename): f = open(filename, 'rb') fileContents = f.read() f.close() return fileContents def FindAll(fileContents, strToFind): found = [] lastOffset = -1 while True: lastOffset += 1 lastOffset = fileContents.find(b'\xC3\xCC\xCC\xCC\xCC', lastOffset) if lastOffset != -1: found.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(lastOffset) else: break return found def FixOffsets(offsetList): for current in range(0, len(offsetList)): offsetList[current] += 0x00400000 return offsetList def AbsentFromList(toFind, theList): for i in theList: if i == toFind: return True return False # Outputs the original file with all RETNs replaced with INT3s. def RemoveRETNs(locationsOfRETNs, oldFilesContents, newFilesName): target = open(newFilesName, 'wb') toOutput = oldFilesContents for currentLoc in locationsOfRETNs: toOutput[currentLoc - 0x00400000] = b'\xCC' target.write(toOutput) target.close() fileContents = GetFileContents(inputFile) offsets = FixOffsets(FindAll(fileContents, '\xC3\xCC\xCC\xCC\xCC')) RemoveRETNs(offsets, fileContents, patchedFile) </code></pre> <p>我做错了什么,我能做什么来纠正它?代码示例?</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>将<code>GetFileContents</code>的<code>return</code>语句更改为</p> <pre><code>return bytearray(fileContents) </code></pre> <p>其他的都能用。你需要使用<code>bytearray</code>,而不是<code>bytes</code>,因为前者是可变的(读/写),后者(这就是你现在使用的)是不可变的(只读)。</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
9 回答
无法使用Django\u mssql\u后端迁移到外部hos
2 回答
无法使用Django&Python3.4连接到MySql
6 回答
无法使用Django+nginx上载媒体文件
10 回答
无法使用Django1.6导入名称模式
10 回答
无法使用Django1.7和mongodb登录管理站点
9 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
7 回答
无法使用Djangockedi验证CBV中的字段
7 回答
无法使用Djangocketditor上载图像(错误400)
9 回答
无法使用Djangocron进行函数调用
9 回答
无法使用Djangofiler djang上载文件
3 回答
无法使用Djangokronos
2 回答
无法使用Djangomssql provid
10 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
4 回答
无法使用Djangomssq迁移Django数据库
7 回答
无法使用Djangonox创建用户
6 回答
无法使用Djangopyodb从Django查询SQL Server
5 回答
无法使用Djangopython3ldap连接到ldap
4 回答
无法使用Djangoredis连接到redis
2 回答
无法使用Django中的FK创建新表
10 回答