вот, уже кое что готово, первая рабочая ревизия
путь сменился:
http://samosat.ru/muml/agentshell.exe.zip
работает вызов вин-апи функций из ява-скрипта. Путем вызова метода объекта
exe.winapi("имя_dll:имя_апи_function", [ аргумент1,аргумет2,.... ]).
вот пример функции, убивающей просесс
function kill_process(pname) {
var memheap = exe.winapi("kernel32:GetProcessHeap");
if (memheap == 0) {
alert('ERROR:' + ash_last_error);
return;
}
var MAX_PATH = 260;
var TH32CS_SNAPPROCESS = 2;
var PROCESS_TERMINATE = 1;
var hSnapshot = exe.winapi("kernel32:CreateToolhelp32Snapshot",[TH32CS_SNAPPROCESS,0]);
var PROCESSENTRY32_size = 9*4 + MAX_PATH*2;
if (PROCESSENTRY32_size%4 != 0) {
PROCESSENTRY32_size /= 4;
PROCESSENTRY32_size *= 4;
}
var pe32 = exe.winapi("kernel32:HeapAlloc",[memheap,8,PROCESSENTRY32_size]);
exe.send("mem-set-dword",[pe32,0,PROCESSENTRY32_size]);
var ok = exe.winapi("kernel32:Process32FirstW",[hSnapshot, pe32]);
while (ok) {
var exe_name = exe.send("mem-string-from",[9*4 + pe32]);
if (exe_name == pname) {
var pid = parseInt(exe.send("mem-get-dword",[pe32,8]));
if (pid != 0) {
var hPr = exe.winapi("kernel32:OpenProcess",[PROCESS_TERMINATE,0,pid]);
if (hPr != 0) {
exe.winapi("kernel32:TerminateProcess",[hPr,0]);
exe.winapi("kernel32:CloseHandle",[hPr]);
}
}
}
ok = exe.winapi("kernel32:Process32NextW",[hSnapshot, pe32]);
}
exe.winapi("kernel32:CloseHandle",[hSnapshot]);
exe.winapi("kernel32:HeapFree",[memheap,0,pe32]);
}