Пришел на почту обфусцированный js файл, по сути загрузчик вируса. Стало интересно что он делает, решил дебажитьи используя script.google.com, так безопаснее.
Вся работа в скрипте идет через объект ActiveX. Ясное дело в гугле нет такого объекта, но нам это наруку, объявим свой. Классы использовать не удалось, по-этому через функцию.
function cFields() {
this.append = function(a,b,c){Logger.log('ActiveXObject ('+this.fileName+'.fields) append('+a+','+b+','+c+')');return 'fields.append'};
}
function ActiveXObject(file_name) {
this.fileName = file_name;
Logger.log('ActiveXObject ('+this.fileName+') NEW');
this.Status = 200;
this.fields = new cFields();
this.open = function(a,b,c){Logger.log('ActiveXObject ('+this.fileName+') open: ('+a+','+b+','+c+')');return 'open'};
this.send = function(a,b,c){Logger.log('ActiveXObject ('+this.fileName+') send()');return 'send'};
this.GetSpecialFolder = function(a){Logger.log('ActiveXObject ('+this.fileName+') GetSpecialFolder('+a+')'); return 'SpecFolder'};
this.GetTempName = function(a){Logger.log("ActiveXObject ("+this.fileName+") GetTempName()"); return 'TempName'};
this.Open = function(){Logger.log('ActiveXObject ('+this.fileName+') Open()');return 'Open'};
this.Write = function(a){Logger.log('ActiveXObject ('+this.fileName+') Write('+a+')');return 'Write'};
this.Read = function(a){Logger.log('ActiveXObject ('+this.fileName+') Read('+a+')');return 'Read'};
this.addNew = function(a){Logger.log('ActiveXObject ('+this.fileName+'.fields) addNew('+a+')');return 'fields.addNew'};
}
Таким нехитрым образом в логах вижу все что творит скрипт. На каком-то этапе скрипт останавливается:
TypeError: [object Object] является не функцией, а object.
uKi = new ActiveXObject('ADODB.Recordset')
St = 'appendChunk'
q = 'Read'
uKi(Z)[St](q);
Собственно вопрос, как в исходном объекте объявить метод, который будет вызываться при обращении к объекту подобно функции?
UPD:
По этой ссылке можете сами посмотреть полный скрипт.
https://script.google.com/d/1IrkYN_Sg0j_uiMD4fAmEP...
Для запуска выполните функцию doGet или пройдите по ссылке:
https://script.google.com/macros/s/AKfycbyiYp4kX07...