网站的 js 文件被编码/加密了,请教如何解码/解密

2022-01-27 16:31:12 +08:00
 yxnwh
最近想研究下小蚁 app 的自动化签到,发现其签到的链接中有一个 hmac 参数应该是由一定规律生成并经 base64 加密的,于是想从网站的 js 文件中寻找 hmac 参数的生成规律,结果发现 js 文件均被编码 /加密化了,想请教该如何解码 /解密,谢谢!

http://app.xiaoyi.com/cnApph5/_nuxt/f118e97bbcaab8f492a4.js

http://app.xiaoyi.com/cnApph5/_nuxt/ae71fc08bc9bf6f6ccf5.js

http://app.xiaoyi.com/cnApph5/_nuxt/26e00da666be514e9378.js

http://app.xiaoyi.com/cnApph5/_nuxt/d1077a3d71f4093bd8d2.js

http://app.xiaoyi.com/cnApph5/_nuxt/3d1b0b24ca149b778f98.js
5185 次点击
所在节点    JavaScript
23 条回复
mm163
2022-01-27 17:02:12 +08:00
就是简单的 ascii 码,把\xXX 的都转成字符就行了。
pengtdyd
2022-01-27 17:08:42 +08:00
换一个思路,不解密,直接用它的源码
yxnwh
2022-01-27 17:15:17 +08:00
@mm163 多谢,我转换一下试试
yxnwh
2022-01-27 17:17:35 +08:00
@pengtdyd 有好多个 js 文件,不知道哪一个包含生成 hmac 函数的
coolan
2022-01-27 17:19:15 +08:00
https://www.prettifyjs.net/ 这玩意看起来乱得很
locoz
2022-01-27 17:26:20 +08:00
KuroNekoFan
2022-01-27 17:53:21 +08:00
为什么要研究这个呢,彻底点换成 wasm 模块你就啥都看不到了啊
musi
2022-01-27 18:23:39 +08:00
相比于解密,感觉运行时去 debug 要简单一点
yxnwh
2022-01-27 21:39:27 +08:00
@musi 小蚁 app 是在手机上运行的一个 app ,不是一个单独的网页,可以 fiddler 抓包然后 debug 吗?对这一块不熟悉,求一个思路~
yazoox
2022-01-28 12:03:10 +08:00
@locoz 这是个啥网站,还可以还原 js 代码。好清爽!
你们自己搭的?
locoz
2022-01-28 12:04:56 +08:00
@yazoox #10 我们团队的蔡老板搞的一个小工具
tsanie
2022-01-28 12:22:43 +08:00
@locoz 捉个小虫,.ob-recovery .top-bar 加一个 box-sizing: border-box 😂
lqfxz520
2022-01-28 13:01:28 +08:00
好奇怎么把代码转吗码的,使用什么工具
Juszoe
2022-01-28 13:51:50 +08:00
建议反编译 app 进行动态调试,光抓包很难看出什么,何况这 js 并不一定包含 hmac 的加密逻辑
yxnwh
2022-01-28 15:30:48 +08:00
@Juszoe 好像被我解决了,分析了另外一个 js ( http://app.xiaoyi.com/cnApph5/_nuxt/247c36a83845ea02d71b.js ),然后搜索 hmac ,就找到了他的加密函数,我对 js 不是太精通,于是借助 vscode 对函数内的每一条语句单独调试,看看结果到底是什么,基本就摸清楚了
yxnwh
2022-01-28 15:33:00 +08:00
@locoz 代码粘贴进去点还原,总是报错,还是用回笨办法,用了楼上一位老哥的链接,把 js 美化 /反混淆后直接硬着头皮去研究
lvsemi1
2022-01-28 19:03:06 +08:00
@KuroNekoFan 是什么让你产生了 wasm 就解密不了的错觉?
ClarkAbe
2022-01-28 20:47:37 +08:00
@KuroNekoFan 你这话说得就和 jar 就不能反编译一样,而且 wasm 的可读性其实还更好
locoz
2022-01-29 10:24:55 +08:00
@tsanie #12 👌谢谢,已修复
locoz
2022-01-29 10:32:19 +08:00
@lqfxz520 #13 这个不叫“转码”,叫“混淆”。原理就是通过将代码解析成 AST ,然后在各个节点前后添加无意义的额外操作或实际根本不会执行的代码,又或是处理成一些对于程序执行而言逻辑一样但人看着会很复杂的样子,处理完再把 AST 转换回代码,就会是这个效果了。

市面上很多混淆工具都是基于 https://github.com/javascript-obfuscator/javascript-obfuscator 这个项目搞的,基于这个项目的在线工具 https://obfuscator.io/ ,还有一些颜文字混淆之类的简单混淆工具网上搜一下很多,你可以自己玩玩。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/830956

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX