V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Kiza
V2EX  ›  问与答

软件中有没有与“飞线”相对应的东西?

  •  
  •   Kiza · 2022-07-20 11:24:35 +08:00 · 5013 次点击
    这是一个创建于 617 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题。
    53 条回复    2022-07-21 11:01:59 +08:00
    learningman
        1
    learningman  
       2022-07-20 11:25:54 +08:00 via Android
    飞线是把两个点连一起,所以,建边?
    ShinichiYao
        2
    ShinichiYao  
       2022-07-20 11:26:54 +08:00   ❤️ 1
    Work around
    ele332
        3
    ele332  
       2022-07-20 11:27:24 +08:00   ❤️ 7
    goto?
    paradoxs
        4
    paradoxs  
       2022-07-20 11:27:24 +08:00
    单例啊,工厂模式啊
    quicknight
        5
    quicknight  
       2022-07-20 11:27:53 +08:00
    hook
    mxT52CRuqR6o5
        6
    mxT52CRuqR6o5  
       2022-07-20 11:28:52 +08:00 via Android
    Goto
    linksNoFound
        7
    linksNoFound  
       2022-07-20 11:28:53 +08:00   ❤️ 4
    飞线是跳过不可重构的部分直接调用核心方法
    felixcode
        8
    felixcode  
       2022-07-20 11:30:45 +08:00 via Android
    ShellRun
    goto
    akaxiaok339
        9
    akaxiaok339  
       2022-07-20 11:31:28 +08:00
    window.myFunction = xxx
    DT27
        10
    DT27  
       2022-07-20 11:33:00 +08:00   ❤️ 1
    全局变量
    Jooooooooo
        11
    Jooooooooo  
       2022-07-20 11:36:01 +08:00
    像是 mock 数据的逻辑.

    对方接口不可用, 直接 mock 这个接口绕过它.
    coderluan
        12
    coderluan  
       2022-07-20 11:36:58 +08:00
    飞线要是名词的话,我想到的是 goto
    飞线要是动词的话,我想到的是用 vs debug 的时候,代码停到某断点时会有个黄箭头提示,这个黄箭头其实是可以拖拽的,这样就可以强行进入一些不满足条件的分支。
    Maboroshii
        13
    Maboroshii  
       2022-07-20 11:39:15 +08:00 via Android
    特殊处理的 if else 就是飞线
    yukiww233
        14
    yukiww233  
       2022-07-20 11:41:30 +08:00
    if return
    wu67
        15
    wu67  
       2022-07-20 11:41:58 +08:00
    前端仔的各种状态管理不就是么. 讲究一点的, 还会用各种库或者官方库实现, 骚一点的, 像 vue 的 bus, 我都不想说话...
    LongLights
        16
    LongLights  
       2022-07-20 11:42:32 +08:00
    第一反应是 声卡跳线
    fisherwei
        17
    fisherwei  
       2022-07-20 11:46:01 +08:00   ❤️ 1
    个人理解

    硬件上飞线有几种用途,比如:
    1 、某个 PCB 受损了,用飞线搭桥跳过去
    2 、增加一个外围芯片,或者短接两个芯片的针脚,比如用于破解、欺骗信号等
    3 、用于调试电平信号

    对应的软件方法大概是:
    1 、基本不存在
    2 、汇编进去,搞个 JE/JMP 之类的跳转。或者用 hook 阻挡某个 API 让原应用调用自己的代码
    3 、debug 工具
    ipwx
        18
    ipwx  
       2022-07-20 12:11:54 +08:00   ❤️ 1
    from gevent import monkey
    monkey.patch_all()

    ----

    https://www.gevent.org/api/gevent.monkey.html
    Felldeadbird
        19
    Felldeadbird  
       2022-07-20 12:34:30 +08:00
    goto 看语言吧。 我觉得这个就是飞线了。
    ck65
        20
    ck65  
       2022-07-20 12:37:15 +08:00
    override
    kop1989smurf
        21
    kop1989smurf  
       2022-07-20 12:46:56 +08:00
    如果再在严格定义一点的话,飞线是因为不需要,或者不想用 pcb 既定的功能和逻辑。
    所以更类似的是对没有编译、重构权的框架、库的 heck ?
    lululau
        22
    lululau  
       2022-07-20 12:50:12 +08:00   ❤️ 2
    monkey patch
    dirty hack
    ZHenJ
        23
    ZHenJ  
       2022-07-20 12:53:11 +08:00
    goto 感觉是最像飞线的
    feather12315
        24
    feather12315  
       2022-07-20 13:00:36 +08:00 via Android
    1. 全局变量
    2. goto
    mingl0280
        25
    mingl0280  
       2022-07-20 14:18:52 +08:00
    软件飞线那不就是 hack 么,什么 goto 都是程序内固定的指令跳转流程,怎么就飞线了?
    比方说 VS 的 debug 时强行跳转到某一行,破解软件用的 nop ,这种直接修改原有流程的。
    qiayue
        26
    qiayue  
       2022-07-20 14:37:44 +08:00
    我们接手了一套 N 年的代码,搞懂了数据库每个表每个字段的含义后,重写了后台,重写了接口。
    老用户继续用老接口,新用户后面开始用新接口。
    我感觉,这也算是飞线。
    villivateur
        27
    villivateur  
       2022-07-20 14:42:56 +08:00
    飞线是因为最初设计 PCB 的时候失误所以需要额外连线,或者调试的时候临时接线。
    我觉得软件里面的“飞线”就是调试代码,或者不断拉屎的过程。
    hfl1995
        28
    hfl1995  
       2022-07-20 14:47:52 +08:00
    EventBus
    hfl1995
        29
    hfl1995  
       2022-07-20 14:48:52 +08:00   ❤️ 1
    事件订阅相关的设计模式,都差不多是吧
    shinsekai
        30
    shinsekai  
       2022-07-20 14:53:34 +08:00
    SJMP ,AJMP ,LJMP 总有一款适合您
    besto
        31
    besto  
       2022-07-20 14:56:57 +08:00
    飞线属于硬件 rework 的一种,就功能而言
    @fisherwei
    @villivateur
    这两位合起来说的已经很全了。理论上软件不存在类似情况(再不济可以重构,抬杠就是硬件可以重画板子),一定要模仿,那几种可能性都算:
    1. 加个 print 打印内部信息(类似引脚飞线,来量波形)
    2. 加个 API 读取 /设置本来不暴露的内部状态(类似飞出 jtag 口,使用劳德巴赫调试)
    3. #if 0 (类似直接短接一部分电路)
    4. 建立一个新的函数,名为 xxxx2 xxxx3 (类似于外接芯片 /搬板)
    horseInBlack
        32
    horseInBlack  
       2022-07-20 14:57:50 +08:00
    想起个程序员笑话:
    style=“background-color:pink!important;”就是 CSS 里的 console.log()

    有次内部系统有个生产问题,我的临时解决方案就是让使用者打开控制台,粘贴运行我给的 JS 代码把之前错误的函数覆盖掉,先把要完成的事情处理掉再说
    adoal
        33
    adoal  
       2022-07-20 15:01:14 +08:00 via iPhone
    各种 work around 的特例情况处理,尤其是“这特喵明明是操作系统、底层库、第三方 API 的 bug 但是又不能升级怎么办”时写一些特例处理把 bug 当 feature 对待…
    BingoXuan
        34
    BingoXuan  
       2022-07-20 15:02:16 +08:00
    如果你的程序遵循 actor model 的话,直接改变特定 mailbox 策略就行了
    joesonw
        35
    joesonw  
       2022-07-20 15:11:20 +08:00 via iPhone
    epbf 咯
    joesonw
        36
    joesonw  
       2022-07-20 15:11:36 +08:00 via iPhone
    @joesonw ebpf ,手残了。
    shenyu1996
        37
    shenyu1996  
       2022-07-20 15:16:01 +08:00
    Eventbus
    libook
        38
    libook  
       2022-07-20 15:50:19 +08:00
    硬件一旦生产出来,设计就固定了,所以一些情况下只能通过飞线来解决问题。

    软件生产出来后,只要还有源代码,就可以以极低成本进行修改并生产出一个新的版本,所以通常不需要类似于飞线的机制。

    用类似飞线的机制的场景,我能想到的就是破解,把验证通过的地址接到验证之前,以绕过授权验证阶段。
    v23xowen
        39
    v23xowen  
       2022-07-20 15:59:58 +08:00
    全局变量?
    bearice
        40
    bearice  
       2022-07-20 16:13:16 +08:00
    硬要说的话,上古时代破解软件验证常用 0x90 (nop) 覆盖验证逻辑的行为可以算一种。
    lazydao
        41
    lazydao  
       2022-07-20 16:22:18 +08:00
    hook
    44670
        42
    44670  
       2022-07-20 16:28:57 +08:00
    hot patch?
    tjyangsg
        43
    tjyangsg  
       2022-07-20 17:18:04 +08:00
    hyperlink
    LZSZ
        44
    LZSZ  
       2022-07-20 17:22:00 +08:00
    破解的话是有 直接 jmp 跳转
    autoxbc
        45
    autoxbc  
       2022-07-20 17:39:20 +08:00
    @horseInBlack #32 确实经常这么用,不过 background-color 不可靠,可能被顶层元素覆盖导致底下的背景色不可见,我一般用 border: 2px solid red
    blackboom
        46
    blackboom  
       2022-07-20 17:42:36 +08:00
    hook
    unintialized
        47
    unintialized  
       2022-07-20 17:43:20 +08:00
    JCC 指令
    HOOK
    MITM
    Features
        48
    Features  
       2022-07-21 01:33:46 +08:00
    现代后端框架操作数据库通常有非常繁杂的流程
    比如模型,实体类等等
    一般直接写 SQL 跳过这些中间流程去操作数据库就算一种飞线吧?
    KaGaMiKun
        49
    KaGaMiKun  
       2022-07-21 09:20:21 +08:00
    比如破解游戏破解软件?让验证或添加收费模块
    这个感觉很像飞线
    qiyue0726
        50
    qiyue0726  
       2022-07-21 10:12:28 +08:00
    除了 goto ,感觉反射也很像
    newmlp
        51
    newmlp  
       2022-07-21 10:37:09 +08:00
    单例
    raptor
        52
    raptor  
       2022-07-21 10:50:14 +08:00
    必须是 goto 啊
    php01
        53
    php01  
       2022-07-21 11:01:59 +08:00
    反射
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3213 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:38 · PVG 19:38 · LAX 04:38 · JFK 07:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.