gzzhanghao

gzzhanghao

V2EX 第 65383 号会员,加入于 2014-06-17 14:28:51 +08:00
写了个反编译 JavaScript 的 babel 插件
JavaScript  •  gzzhanghao  •  2016-10-04 01:22:27 AM  •  最后回复来自 gzzhanghao
15
发布一个用 node 写的 HTTP Debugging Proxy
Node.js  •  gzzhanghao  •  2016-09-24 10:46:40 AM  •  最后回复来自 123s
4
gzzhanghao 最近回复了
65 天前
回复了 DeepUse 创建的主题 JavaScript js 如何解决移动端 webview 滚动穿透的问题.
不清楚具体需求,不过只是想消除背景的话可以加个 fixed 元素并铺满屏幕,这样回弹的部分会显示这个元素的背景色
@BoringTu 见#27,另外我之前也遇到过类似的问题,作为第三方库提供出去,这种情况是控制不了的
@BoringTu 楼主好像说过不能控制 script 标签的位置,另外这里应该不用讨论改内核的场景,那是无解的
我错了,不用判断 stack 那么麻烦,直接 fn.caller 就能秒解

```js
function guard(value) {
function toString() {
if (toString.caller === send) {
return value
}
}
return { toString }
}

function send(method, url, body = undefined) {
const xhr = new XMLHttpRequest()
xhr.open(guard(method), guard(url), false)
xhr.send(guard(body))
console.log(xhr.status, xhr.responseText)
}

send('GET', '/')
```
https://codepen.io/gzzhanghao/full/PopqWZr
v2 回复居然没有缩进…
function guard(value) {
function toString() {
try {
null.a
} catch (error) {
// TODO 判断 error.stack,在 chrome 下 send 和 Object.toString 应该是相邻的
// 注意:不能用 prototype,只能访问 str.length 和 str[index],逐个字符判断
console.log(error.stack)
return value
}
}
return { toString }
}

function send(method, url, body = undefined) {
const xhr = new XMLHttpRequest()
xhr.open(guard(method), guard(url))
xhr.send(guard(body))
}

send('POST', '/', JSON.stringify({ foo: 'bar' }))

/**
* 测试劫持
*/

XHR = XMLHttpRequest
XMLHttpRequest = class {
constructor() {
this.xhr = new XHR()
}
open(method, url) {
return this.xhr.open(method, url)
}
send(body) {
return this.xhr.send(body)
}
}

send('POST', '/', JSON.stringify({ foo: 'bar' }))
2018-10-18 00:02:13 +08:00
回复了 yuedingwangji 创建的主题 全球工单系统 有腾讯的大佬么,企业微信后台一直无法登陆?
2016-10-04 01:22:27 +08:00
回复了 gzzhanghao 创建的主题 JavaScript 写了个反编译 JavaScript 的 babel 插件
@aaronrzh 还是不太一样的,格式化的工作是交给 js-beautifier 完成的,这个只负责把代码逻辑还原出来
2016-10-03 15:03:19 +08:00
回复了 gzzhanghao 创建的主题 JavaScript 写了个反编译 JavaScript 的 babel 插件
@qfdk 其实就是 beautifier 吧,这个工具不是用来格式化代码的,而是用来把一些压缩后的语句恢复正常的。

比如下面这段代码:

```javascript
if (a) {
b()
} else if (c) {
d()
}
```

uglifyjs 会把它转换成`a ? b : c && d`,我所知道的所有代码格式化工具对这种表达式都只是原样输出,而我这个工具能把它变回原来的 if 语句。这点从我上面贴出来的代码就可以看出区别了。
2016-10-02 22:16:53 +08:00
回复了 gzzhanghao 创建的主题 JavaScript 写了个反编译 JavaScript 的 babel 插件
@fulvaz 那叫编译吧,这样的话反编译是指从 v8 生成的汇编变回 js ,这就有点高端了_(:з」∠)_
关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1041 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 57ms · UTC 19:17 · PVG 03:17 · LAX 12:17 · JFK 15:17
♥ Do have faith in what you're doing.