手机:15966888888
电话:010-8888999
邮箱:imtoken@mail.com
地址:青岛润科翔电气有限公司
imToken钱包拦截的源码, 其本质就是在签名的环节和广播的环节之间, 嵌入了一层用于风险控制的过滤机制, 从事做钱包前端开发...
24小时咨询热线:4006666888
产品详情
imToken钱包拦截的源码, 其本质就是在签名的环节和广播的环节之间, 嵌入了一层用于风险控制的过滤机制, 从事做钱包前端开发工作的人心里很清楚, 真正能够决定一笔交易执行不下去的具体逻辑, 是隐藏在签名校验的层面以及交易广播发生之前的 hook 函数里面的,这根本不是什么深奥难测的技术手段。
这个拦截动作是发生在原始交易进行广播以及上链之前的阶段的。imToken会获取用户已经完成签名的该交易, 并且在本地环境中先对规则进行一遍检查, 这里面包含了黑名单地址的限制、合约白名单的规定以及对gas上限设置的考量。
如果出现任何一条规则没有通过的情况, 系统就会直接抛出异常错误, 此时在用户的终端设备界面上仅仅只会弹显示出“交易被拦截”这样的一句提示文本消息, 而用户根本就不会去察觉到在这个区块链网络之上是否存在有任何与该交易相关的痕迹表现。
真正负责具体执行操作的代码是位于transactionManager模块里面, 有一个validateAndSign函数把校验链给串联起来了。如果你想弄清楚那些拦截方面的细节问题, 去查看这个文件就完全足够了。
imToken这个项目并没有实现完全的, 彻底的, 公开源代码这样的状态。可是当人们把它的移动端APK进行反编译之后, 竟然能够从里面提取出一些JS bundle这种东西。
你要是用jadx这个工具把它拉出来, 然后再去搜索intercept或者blockTx这两个关键字的话, 基本上就能找到那个拦截函数本所在的地方了。
更省事的路子是去翻社区流出的前端工程, 你可以到GitHub上去搜imtoken wallet sign hook这个关键词, 能碰到不少片段, 这些内容足够你把拦截链路给捋明白。

等你把那个拦截的逻辑给弄明白了, 然后再回过头去查看imToken里面负责的nonce管理以及那个签名校验的过程, 你就会发现, 这一整套关于交易安全的连接环节, 都是能够被打通并理顺的。
所以, 你千万不要只盯着那个写着“拦截”这两个字的按钮看才对, 实际上起到真正防御作用的防线, 是出在那个签名所对应的那一个层面之内的。
相关推荐
鲁公安备11017697号 Powered:Z-BlogPHP Thems:GebiLaoli