JS加密/解密之JSX解密解析(photoshop插件)

524 阅读9分钟

WX20231204-144436@2x.png

简介

Adobe Photoshop 插件通常使用 JSX(JavaScript XML)脚本语言。这是一种基于JavaScript的扩展,专门设计用于处理Adobe Creative Suite(包括Photoshop)的任务。JSX脚本允许开发者编写自定义脚本以扩展和增强Photoshop的功能。

JSX脚本与普通的JavaScript语法有些不同,因为它结合了XML或HTML样式的标记。这使得编写与用户界面相关的任务更加直观,并且有助于在脚本中表示和操作图形元素。

在Photoshop中,你可以使用JSX脚本执行各种任务,包括自动化重复性的工作、批量处理图像,或者创建定制的图形效果等。当你安装和运行Photoshop插件时,实际上是运行了包含JSX脚本的程序,这些脚本与Photoshop的扩展API进行交互,以实现相应的功能。

关于jsx加密

插件作者为了维护自己的心得,一般都是通过jsx加密,将自己的插件脚本加密后售卖出去。

案例

@JSXBIN@ES@2.0@MyBbyBn0ABJAnAEjzEjFjWjBjMBfRBENyBnAMAbyBn0AEJAnASzBjFCENyBnAMAby\
Bn0ABZAnACzBhLDdCzBhcEVzBjDFfAjzBjBGfnnFeAEjCfRBEjzIjQjBjSjTjFiJjOjUHfRBCzBhPIV\
FfAjGfnnffffdCzBheJSFACzBhFKVFfAjGfnnnffnndhDEXzMjGjSjPjNiDjIjBjSiDjPjEjFLfjzGi\
TjUjSjJjOjHMfRBCDVFfAnndgdffEXzIjUjPiTjUjSjJjOjHNfVFfARBFdhEffnnABF40BhAB0AzAOC\
AnffOAbAn0AElAJAnABQOfVzBjSPfFEVCfERBVFfCffUzCjcjcQQOfVzBjLRfDVFfCEVCfERBVFfCff\
nnnfATFCyBtJAnASRDARBNyBnAMAbyBn0ABZAnAQOfjPfVCf0ABC40BhAB0AOCAfnffJAnASCENyBnA\
MAbyBn0ABZAnAFeDicjXhL0DOCAnffJAnASFCndBffAhzBhBSEXzHjSjFjQjMjBjDjFTfFeARCYBieA\
jMfffnlAOAJAnASzBjQUAEXTfVUfARCEjzGiSjFjHiFjYjQVfRCCDCDnEVCfERBVFfCffeCicjCnnne\
CicjCFeBjHftQOfVRfDVFfCffnffAQOfVRfDVFfCnATFCyBtZAnAVUf0AGP4F0AhAR4D0AhAU40BhAC\
4E0AhAG4B0AhAF4C0AhAG0AOCARGFe4KhHBAjQhAhWjGhdhWjGjcjciKhIhViChMjCiChJjbjQhAhWj\
HhdjbjdhMhWjIhdhWjHibhHicjGichXiciBhHidhdjbjdhMhYjOhdiKhIhJjbjdhMhViDhdhWjIibhH\
icjWicjBicjFichRhHidhdjbhHichRicjKichVichRichZicjHhHhaiKhIhYjPhJjbhYjOibhHicjMi\
cjDicjCichVicjCichVicjXicjMichRhHidhdiFhbjQhAhTiShdiShAhYjOhIhJhbhYjPhGhGhTiSib\
hHicjRichXicjKiciXichZhHidhIhYjPhJhbhTiSibhHicjUicjBicjFichRjDiciDichZichRhVicj\
DicjCicjMichRicjDichVicjXhHidhIhHichXichZichXichVhHhJjcjchIhTiSibhHichXichZichX\
ichVhHidhdiKhIhJjbhTiSibhHichUjOicjFicjNicjMichRicjDhHidibhHichXichZichXichVhHi\
dibhHicjBicjMicjMicjGicjXhHidhIiFhMjCiDhJjdhJhbhTiSibhHichXichZichXichVhHidibhH\
icjMicjDicjCichVicjCichVicjXicjMichRhHidhdhTiShbhTiSibhHichUjOicjFicjNicjMichRi\
cjDhHidhdiFhbiWhAhTiSjdhMhHicjLicjDichRicjBichVichRhHhaiKhIhJjbjQhAhXhWhdiFibhH\
ichRicjKichVichRichZicjHhHidhIhJhbhXhWibhHichXichZichXichVhHidibhHicjBicjMicjMi\
cjGicjXhHidhIhXhWhMjCiDhJhbiWhAhXhWjdhMhHichXichZichXichVhHhaiKhIhJjbjdhMhHicjR\
ichXicjKiciXichZhHhaiKhIhViEhJjbhRjZhIjQhAhXhXhAhYjQhAhViEhJhViEibhHicjUicjBicj\
FichRjDiciDichZichRhVicjDicjCicjMichRicjDichVicjXhHidhIhXhXhJhGhGhIiFibhXhXidhd\
hViEibhXhXidhJhbhViEibhHicjUicjBicjFichRjDiciDichZichRhVicjDicjCicjMichRicjDich\
VicjXThRjchQhThVhThRjchShThThTjchUhShThThTjciKi\
QiFiHiTjBjWjFiPjQjUjJjPjOjTjciGjPjSjNjBjUiPjQjUjJjPjOjTjchXhShYhUhYhUhRhQhVhThR\
hYhXhYjFjcifhQjYhShSjDjGhZjFjcifhQjYhUjGhYhVjDhWjcifhQjYhTjBjFhQjGhYjchUhRhWjch\
WhWhWhWhWhWhWhWhWhWhWhXjcifhQjYjGhRhYjDhShTjcifhQjYhRhUhYhYhQjBjchQhQhQhQhQhRjc\
ifhQjYhVhQhXjFjGhQjcjVhVhShRjEjcjVhVhZjDjCjcjVhXhZjGjCjcjVhZhQhQhSjcifhQjYhShWh\
VjFhThVjcifhQjYhThUhVhThQhXjcjVhVjEjFhWjcjVhVhTjGhTjcifhQjYhSjFhYhSjDhWjcjVhWhS\
hThXjcjVhXhVhThTjcifhQjYhVjChQjFhZjBjcjVhWhShRhQjciTjPjDjLjFjUjcjEjFjMjFjUjFRBF\
eBjcffFdAWzGiPjCjKjFjDjUXAffff0DOByB

解密后

// 部分源代码
_0x385b38 = _0x3ca394.Base = {
  "extend": function (_0x1ec873) {
    _0x3a774f.prototype = this;
​
    var _0x2b1c93 = new _0x3a774f();
​
    _0x1ec873 && _0x2b1c93.mixIn(_0x1ec873);
    _0x2b1c93.hasOwnProperty("init") || (_0x2b1c93.init = function () {
      _0x2b1c93.$super.init.apply(this, arguments);
    });
    _0x2b1c93.init.prototype = _0x2b1c93;
    _0x2b1c93.$super = this;
    return _0x2b1c93;
  },
  "create": function () {
    var _0x579c8f = this.extend();
​
    _0x579c8f.init.apply(_0x579c8f, arguments);
​
    return _0x579c8f;
  },
  "init": function () {},
  "mixIn": function (_0x34eca7) {
    for (var _0x40ab5b in _0x34eca7) _0x34eca7.hasOwnProperty(_0x40ab5b) && (this[_0x40ab5b] = _0x34eca7[_0x40ab5b]);
​
    _0x34eca7.hasOwnProperty("toString") && (this.toString = _0x34eca7.toString);
  },
  "clone": function () {
    return this.init.prototype.extend(this);
  }
}

结语

一般这种加密都套了好多层。解起来也比较费劲。jsjiami(点)com