Автор Тема: [Alpha/Beta Testing] Тестируем сырые обновления (ссылки в первом посте)  (Прочитано 109174 раз)

0 Пользователей и 1 Гость просматривают эту тему.

ya12

  • Активный участник
  • ***
  • Сообщений: 122
    • Просмотр профиля
В разделе SPY выставляешь что смотреть (окна, процессы, потоки). Смотрим процессы. Правой кнопкой мыши выбираешь процесс. Нажимаешь Message, получаешь лог сообщений. В опциях лога выбираешь какие сообщения тебе нужны(клава, мышь и тд). Переходишь в изучаемый процесс. Жмешь клавиши. В логе все сообщения получаемые процессом отражаются. На каждое сообщение можно посмотреть properties.
Для примера. Фильтр сообщений - Клава. Нажал F2.
В логе 2 сообщения:

Нажал F2
(Хендл окна. Сообщение 0100(не системно нажал).  wParam(код F2). lParam(003C0001))

Отпустил F2
(Хендл окна. Сообщение 0101(не системно отпустил).  wParam(код F2). lParam(C03C0001))

Тут можно почитать, как кодируется lParam(если не правильно, комбинация Alt+клавиша не пройдет)
http://decoding.dax.ru/practic/altcode/altcode.html

зы Посылка сообщений не является аналогом PS/2 режима. Т.е. если защита агрится на посылку сообщений о нажатии клавиши, то работать не будет, или выкинет из проги, или бан, или искать в защите слабое место, патчить его и радоваться жизни.
« Последнее редактирование: Октябрь 22, 2019, 10:21:10 am от ya12 »

Hito

  • Герой форума
  • *****
  • Сообщений: 980
    • Просмотр профиля
Ну, вот теперь сразу все ясно стало... ;D
Я не ду... Потому и не бу...

АНТИКЛАН

  • Активный участник
  • ***
  • Сообщений: 111
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #662 : Октябрь 30, 2019, 06:10:20 pm »
Всех с Днем Программиста!
И в честь нашего праздника...

Patch 4.14.003b

https://yadi.sk/d/hPssEg8K76M9RQ

Исправлено почти все, что тут накопано, что-то добавлено, обновлена справка. Ковыряйтесь на здоровье



Johnny спасибо! И тебя! :D

Viktor77

  • Освоившийся
  • **
  • Сообщений: 29
    • Просмотр профиля
Полная сборка Clickermann 4.14.003b
https://yadi.sk/d/zJPu59MW7-YROg
при открытии редактора, сворачивается в трей, и дальше никак в редактор не попасть

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3655
  • Котэ
    • Просмотр профиля
Полная сборка Clickermann 4.14.003b
https://yadi.sk/d/zJPu59MW7-YROg
при открытии редактора, сворачивается в трей, и дальше никак в редактор не попасть

Вероятно редактор появляется за экраном. Хотя, в той сборке что я выложил, такого быть не должно.
Я специально в файле \data\config_editor.ini указал координаты окна 100 100. Именно там должно появляться окно.

left =100
top =100


Viktor77

  • Освоившийся
  • **
  • Сообщений: 29
    • Просмотр профиля
Полная сборка Clickermann 4.14.003b
https://yadi.sk/d/zJPu59MW7-YROg
при открытии редактора, сворачивается в трей, и дальше никак в редактор не попасть

Вероятно редактор появляется за экраном. Хотя, в той сборке что я выложил, такого быть не должно.
Я специально в файле \data\config_editor.ini указал координаты окна 100 100. Именно там должно появляться окно.

left =100
top =100
каким то образом авто заменяется файл  \data\config_editor.ini , и не открывается редактор. приходится из архива каждый раз его доставать. такая ситуация происходит при сворачивании кликера в трей.

Dimava

  • Зашел в гости
  • *
  • Сообщений: 2
    • Просмотр профиля
С помощью препроцессора вполне возможно сделать хоть и немного кривые, но функции.
С локальными переменными и возвращаемыми значениями.

Код: Javascript
  1. s = `
  2.  
  3. sub(ar, $i, $j)
  4. $ret = $arr[$i+10*$j+11]
  5. end_sub
  6.  
  7. ar(1, 2)
  8.  
  9. $v1 = ar(1, ar(2, sin(3))))
  10.  
  11. $v2 = sin(ar(2, sin(3)))
  12.  
  13. $v3 = ar(ar(1, 2), ar(3, 4))
  14.  
  15. `;
  16.  
  17.  
  18. a = s.split('\n');
  19. b = [];
  20.  
  21. localvars = new Map();
  22. subname = ''
  23. subnames = new Set();
  24.  
  25. // todo: make both 'SUB' and 'sub' support
  26. a = a.map(s=>{
  27. if (s.startsWith('sub(')) {
  28.  
  29. subname = s.match(/\(\s*(\w+)/)[1];
  30. subnames.add(subname);
  31.  
  32. localvars = new Map();
  33. localvars.set('$ret', '$_' + subname + '_ret');
  34.  
  35. return s.replace(/\$\w+/g, s=>{
  36. localvars.set(s, '$_' + subname + '_' + localvars.size);
  37. return localvars.get(s);
  38. }
  39. );
  40. }
  41.  
  42. if (s.startsWith('end_sub')) {
  43. localvars = new Map();
  44. return s;
  45. }
  46.  
  47. return s.replace(/\$\w+/g, s=>{
  48. return localvars.get(s) || s;
  49. }
  50. );
  51. }
  52. )
  53.  
  54. a2 = [];
  55. tempn = 0;
  56. for (let s of a) {
  57. if (s.match(/^\s*(sub|for|while|do|if)\s*\(/)) {
  58. a2.push(s);
  59. continue;
  60. }
  61.  
  62. let ws = s.match(/^\s*/)[0];
  63.  
  64. // todo: make "(" string support
  65. let temps = []
  66. for (let i = 0; i < 10; i++) {
  67. s = s.replace(/(\w+)\([^()]*\)/, (s, fname) => {
  68. let tempname = '$_temp_' + (++tempn)
  69. let o = {type: 'call', s, fname, n: tempn, tempname};
  70. o.id = temps.push(o);
  71. return tempname;
  72. })
  73. }
  74. let inlines = new Map();
  75. for (let o of temps) {
  76. for (let i = 0; i < 10; i++) {
  77. o.s = o.s.replace(/\$_temp_\w+/, s => inlines.get(s) || s)
  78. }
  79. if (subnames.has(o.fname)) {
  80. a2.push(ws + o.s);
  81. a2.push(ws + o.tempname + ' = $_' + o.fname + '_ret');
  82. } else {
  83. inlines.set(o.tempname, o.s)
  84. }
  85. }
  86. for (let i = 0; i < 10; i++) {
  87. s = s.replace(/\$_temp_\w+/, s => inlines.get(s) || s)
  88. }
  89. a2.push(s);
  90.  
  91.  
  92. }
  93.  
  94. s = a2.join('\n')
  95.  
  96. console.log('%o', s);
  97.  
  98.  

Из
Код: Clickermann
  1. sub(ar, $i, $j)
  2. $ret = $arr[$i+10*$j+11]
  3. end_sub
  4.  
  5. ar(1, 2)
  6.  
  7. $v1 = ar(1, ar(2, sin(3))))
  8.  
  9. $v2 = sin(ar(2, sin(3)))
  10.  
  11. $v3 = ar(ar(1, 2), ar(3, 4))
  12.  
генерирует
Код: Clickermann
  1. sub(ar, $_ar_1, $_ar_2)
  2. $_ar_ret = $arr[$_ar_1+10*$_ar_2+11]
  3. end_sub
  4.  
  5. ar(1, 2)
  6. $_temp_1 = $_ar_ret
  7. $_temp_1
  8.  
  9. ar(2, sin(3))
  10. $_temp_3 = $_ar_ret
  11. ar(1, $_temp_3)
  12. $_temp_4 = $_ar_ret
  13. $v1 = $_temp_4)
  14.  
  15. ar(2, sin(3))
  16. $_temp_6 = $_ar_ret
  17. $v2 = sin($_temp_6)
  18.  
  19. ar(1, 2)
  20. $_temp_8 = $_ar_ret
  21. ar(3, 4)
  22. $_temp_9 = $_ar_ret
  23. ar($_temp_8, $_temp_9)
  24. $_temp_10 = $_ar_ret
  25. $v3 = $_temp_10
  26.  


Если кто может перевести в dll (сам на подходящих языках плохо пишу), пожалуйста скомпилируйте.
« Последнее редактирование: Январь 06, 2020, 05:49:57 pm от Dimava »

dramster

  • Герой форума
  • *****
  • Сообщений: 1031
    • Просмотр профиля
А какая именно функция должна быть в длл?  Я так понимаю "ar", типа вот эта :
Код: Clickermann
  1. ....
  2.     $ret = $arr[$i+10*$j+11]
  3. ....
  4.  
Но кроме двух параметров $i и $j у нас же еще есть некий массив $arr. В последней версии длл вроде принимает массивы, не пробовал использовать в длл пока. В таком случае нужно параметры $i и $j добавить в массив. Можно в начало, можно в конец.
 
из  справки:
Цитировать
Однако необходимо помнить, что массив должен содержать только целочисленные значения, иначе будет ошибка.

А у тебя sin(3) = 0.052 = 0
Если нужно именно так как ты написал, то можно и дробные пересылать в длл, но перед этим их нужно перевести целочисленные http://crapware.aidf.org/forum/index.php?topic=5212.0 , ну  или както попроще.

Вобщем, для начала, вот простенький пример твоей функции на делфи7, работает только с целочисленными.
Код делфи:
Код: Clickermann
  1. library test;
  2.  
  3. uses
  4.  SysUtils;
  5. //------------------------------------------------------------------------------
  6. // Основное тело функции, идет на экспорт, вызывается из кликера
  7. function execute( _mas: pInteger; _size: Integer): Integer; export; stdcall;
  8. type
  9.  pIntArr = array[0..0] of Integer;
  10. var
  11.  i, j : Integer;
  12. begin
  13. // _mas  - указатель на начало массива параметров integer
  14. // _size - размер массива (число параметров)
  15.  
  16.   i := pIntArr(_mas^)[_size-2]; //наши два параметра
  17.   j := pIntArr(_mas^)[_size-1];
  18.  
  19. result := pIntArr(_mas^)[i + 10*j + 11]; // присваиваем возвращаемое значение
  20.  
  21. end;
  22. //------------------------------------------------------------------------------
  23.  
  24. // список экспорта
  25. exports execute;
  26.  
  27. begin
  28.  // тело пусто
  29. end.

Тестовый код, для проверки в кликере, версия 4.14.003 (x32):
Код: Clickermann
  1. FOR($a=0,$a<200)       //создаем рандомный массив со значениями от 0 до 9. 200 элементов
  2.  ARRPUSH ($arr, rnd(0,9))
  3. END_CYC
  4.  
  5.  
  6. $i = 1
  7. $j = 2
  8.  
  9. ARRPUSH ($arr, $i) //добавляем в конец наши параметры
  10. ARRPUSH ($arr, $j)
  11.  
  12. print("результат расчитанный кликером = ", $arr[$i+10*$j+11])
  13.  
  14.  
  15. callarr("test.dll", $arr)
  16.  
  17. print("результат расчитанный dll = ",$_return1)
  18.  
  19. halt

Результаты расчетов кликера и длл совпадают.



Во вложении "test.dll"
« Последнее редактирование: Январь 08, 2020, 11:03:42 pm от dramster »

Dimava

  • Зашел в гости
  • *
  • Сообщений: 2
    • Просмотр профиля
Вот тот мой препроцессор (работает только в браузере): https://output.jsbin.com/rafaqey ( код - https://jsbin.com/rafaqey/edit?js,output )

А вот что оно делает (там этот же пример)

Код: Clickermann
  1. #preprocessor "please_make_this_dll.dll"            #preprocessor "please_make_this_dll.dll"
  2.  
  3. // пример                                           // пример
  4.  
  5. // локальные переменные $x и $y - имена поменять    // локальные переменные $x и $y - имена поменять
  6. sub(fn1, $x, $y)                                    sub(fn1, $_fn1_1, $_fn1_2)
  7.   // возвращаемое значение - имя поменять             // возвращаемое значение - имя поменять
  8.   $ret = $x * $x + $y * $y                            $_fn1_ret = $_fn1_1 * $_fn1_1 + $_fn1_2 * $_fn1_2
  9. end_sub                                             end_sub
  10.  
  11. for ($x = 0, $x < 5)                                for ($x = 0, $x < 5)
  12.   for ($y = 0, $y < 5)                                for ($y = 0, $y < 5)
  13.      // вызов функции - сохранить возвращаемое           // вызов функции - сохранить возвращаемое
  14.      //     значение во временную переменную             //     значение во временную переменную
  15.      $s = $s + fn1($x, $y)                               fn1($x, $y)
  16.   end_cyc                                                $_temp_1 = $_fn1_ret
  17. end_cyc                                                   $s = $s + $_temp_1
  18.                                                       end_cyc
  19.                                                    end_cyc
  20.  
  21.  
  22. // пример 2                                         // пример 2
  23.  
  24. sub(fn2, $i)                                        sub(fn2, $_fn2_1)
  25.   // возвращаемой значение - имя всегда $ret          // возвращаемой значение - имя всегда $_fn2_ret
  26.   $ret = $i * ($i + 1)                                $_fn2_ret = $_fn2_1 * ($_fn2_1 + 1)
  27. end_sub                                             end_sub
  28.  
  29. // развёртка функций должна поддерживать            // развёртка функций должна поддерживать
  30. // многократную вложенность                         // многократную вложенность
  31. $v1 = fn2(1) + fn2(fn2(fn2(fn2(1))))                fn2(1)
  32.                                                    $_temp_1 = $_fn2_ret
  33. // встроенные функции не должны развёртываться      fn2(1)
  34. $v2 = fn2(cos(sin(fn2(1))))                         $_temp_2 = $_fn2_ret
  35.                                                    fn2($_temp_2)
  36.                                                    $_temp_3 = $_fn2_ret
  37.                                                    fn2($_temp_3)
  38.                                                    $_temp_4 = $_fn2_ret
  39.                                                    fn2($_temp_4)
  40.                                                    $_temp_5 = $_fn2_ret
  41.                                                    $v1 = $_temp_1 + $_temp_5
  42.  
  43.                                                    // встроенные функции не должны развёртываться
  44.                                                    fn2(1)
  45.                                                    $_temp_6 = $_fn2_ret
  46.                                                    fn2(cos(sin($_temp_6)))
  47.                                                    $_temp_9 = $_fn2_ret
  48.                                                    $v2 = $_temp_9
  49.  
  50.  
« Последнее редактирование: Январь 11, 2020, 02:50:21 pm от Dimava »