so地址 就是这个so,修改的指令大概如下 原本是
vcmp s15,s18
vmrs aspr_nzcv,fpscr
vmovmi r1,s18
vmovpl r1,s15
我改成
vcmp s15,s18
vmrs aspr_nzcv,fpscr
nop
vmovpl r1,s15
然后就报错了。因为对汇编是个小白,不懂怎么说自己的需求,这代码也不懂到底改的对不对,毕竟这个SO也只是一个小游戏的SO(F1 2016 手游),所以以为没必要把so放出来,直接把报错放出来就能解决问题的。不好意思啊大佬们
链接过期了,补上[新链接] (https://musetransfer.com/m/s/1mu079xjo)是arm-v7a
1
eyeshuaji OP 来个大佬啊
|
2
pursuer 150 天前
错误信息已经说了地址对齐错误。这种问题一般要看源码的,至少要把改了什么发出来,不然没法给出更具体的建议。
|
3
424778940 150 天前
没有具体信息和场景怎么判断....
你要不直接把二进制和你在搞啥丢出来? |
4
icy37785 150 天前 via iPhone 1
你这问题感觉算命先生才专业对口。
|
5
kkhaike 150 天前
和你修改有关,你这么问我们咋回答。上附件
|
6
kohinata 150 天前 2
先看一遍《 How To Ask Questions The Smart Way 》可能才是你应该做的事情
|
11
424778940 149 天前
文件过期 看指令 vmov mi 估计是 vfp 吧 什么版本和架构不知道 楼主不说
vmov 指令 opcode 估计三四个字节 nop 只有 1-3 个字节 不同平台不一样 但总之跟 vmov 长度不一样 vmov 带操作数可能会更长 假设你把一个 6 字节的指令+操作数的汇编转化的二进制换成一个 3-4 字节的 nop 指令的二进制 这能对齐就有鬼了 一般做法是要么原指令 mov 的输入和输出一样 白倒腾一下来达到 nop 的目的 要么就补多个 nop 来达到目的 总之你必须保证改完的文件大小和指令偏移都没有变 看下来还是在改游戏, 以为你在搞什么难搞且有价值的东西, 不打算继续讨论了 |
12
LGA1150 149 天前 via Android
> 因为对汇编是个小白,不懂怎么说自己的需求,这代码也不懂到底改的对不对
你这是有勇无谋啊 vmovpl 和 vmovmi 是 conditional move ,而 mi 和 pl 正好是两个互斥条件: https://developer.arm.com/documentation/den0013/d/ARM-Thumb-Unified-Assembly-Language-Instructions/Instruction-set-basics/Conditional-execution 你现在把其中一个改成了 nop ,那么 r1 的值在那个条件下就变成未定义了 |
13
eyeshuaji OP 好吧,我突然发现这个 so 原本就有问题,此帖终结
|