反编译修改 so 后报错: signal 7 (SIGBUS), code 1 (BUS_ADRALN) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
eyeshuaji
V2EX    Android

反编译修改 so 后报错: signal 7 (SIGBUS), code 1 (BUS_ADRALN)

  •  
  •   eyeshuaji 2024-07-20 19:03:02 +08:00 7414 次点击
    这是一个创建于 472 天前的主题,其中的信息可能已经有所发展或是发生改变。
    上网查说是什么数据字节不对齐,但是很少有给出解决方法的,或者是方法无效的,所以还是来问 v 友们。
    第 1 条附言    2024-07-22 01:03:10 +08:00

    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放出来,直接把报错放出来就能解决问题的。不好意思啊大佬们

    第 2 条附言    2024-07-22 12:56:46 +08:00

    链接过期了,补上[新链接] (https://musetransfer.com/m/s/1mu079xjo)是arm-v7a

    第 3 条附言    2024-07-22 12:59:17 +08:00
    链接错了,这个才对 https://musetransfer.com/m/s/1mu079xjo
    13 条回复    2024-07-23 11:33:39 +08:00
    eyeshuaji
        1
    eyeshuaji  
    OP
       2024-07-20 22:59:26 +08:00
    来个大佬啊
    pursuer
        2
    pursuer  
       2024-07-21 00:03:52 +08:00
    错误信息已经说了地址对齐错误。这种问题一般要看源码的,至少要把改了什么发出来,不然没法给出更具体的建议。
    424778940
        3
    424778940  
       2024-07-21 01:02:05 +08:00
    没有具体信息和场景怎么判断....
    你要不直接把二进制和你在搞啥丢出来?
    icy37785
        4
    icy37785  
       2024-07-21 05:18:01 +08:00 via iPhone   1
    你这问题感觉算命先生才专业对口。
    kkhaike
        5
    kkhaike  
       2024-07-21 10:30:49 +08:00
    和你修改有关,你这么问我们咋回答。上附件
    kohinata
        6
    kohinata  
       2024-07-21 12:26:50 08:00   2
    先看一遍《 How To Ask Questions The Smart Way 》可能才是你应该做的事情
    eyeshuaji
        7
    eyeshuaji  
    OP
       2024-07-22 01:28:21 +08:00
    @kkhaike #5 已经上了
    eyeshuaji
        8
    eyeshuaji  
    OP
       2024-07-22 01:28:56 +08:00
    @424778940 #3 看下附言
    eyeshuaji
        9
    eyeshuaji  
    OP
       2024-07-22 11:32:31 +08:00
    @pursuer #2 已经附上 so 了
    424778940
        10
    424778940  
       2024-07-22 11:53:53 +08:00
    @eyeshuaji 说了等于没说 你什么平台啊 arm/mips/x86 汇编能是一回事吗?
    424778940
        11
    424778940  
       2024-07-22 12:30:28 +08:00
    文件过期 看指令 vmov mi 估计是 vfp 吧 什么版本和架构不知道 楼主不说
    vmov 指令 opcode 估计三四个字节 nop 只有 1-3 个字节 不同平台不一样 但总之跟 vmov 长度不一样
    vmov 带操作数可能会更长 假设你把一个 6 字节的指令+操作数的汇编转化的二进制换成一个 3-4 字节的 nop 指令的二进制
    这能对齐就有鬼了
    一般做法是要么原指令 mov 的输入和输出一样 白倒腾一下来达到 nop 的目的
    要么就补多个 nop 来达到目的
    总之你必须保证改完的文件大小和指令偏移都没有变

    看下来还是在改游戏, 以为你在搞什么难搞且有价值的东西, 不打算继续讨论了
    LGA1150
        12
    LGA1150  
       2024-07-22 13:37:16 +08:00 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 的值在那个条件下就变成未定义了
    eyeshuaji
        13
    eyeshuaji  
    OP
       2024-07-23 11:33:39 +08:00
    好吧,我突然发现这个 so 原本就有问题,此帖终结
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3885 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 05:15 PVG 13:15 LAX 21:15 JFK 00:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86