Garik66 Опубликовано 1 августа, 2016 Поделиться Опубликовано 1 августа, 2016 (изменено) Пока грузится видео, по-моему придумал как сделать защиту и в первой части скрипта, так что попозже, если у меня всё получится, запишу небольшое дополнение к видео и выложу обновлённый скрипт в следующем сообщении. Скрипт "The maximum number of troops": Скрытый текст Уточнённый скрипт с защитой от ошибок пользователя и доп-видео выложил во втором сообщении этой темы. Инструкция "как пользоваться скриптом" на видео. Видео: Изменено 1 августа, 2016 пользователем Garik66 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 1 августа, 2016 Автор Поделиться Опубликовано 1 августа, 2016 (изменено) Уточнённый скрипт, по сравнению со скриптом, написанным во втором видео, скрипт оптимизирован - удалены лишние инструкции. Скрипт "The maximum number of troops": Скрытый текст { Game : KB.exe Version: Date : 2016-07-31 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(Sum0,KB.exe,F3 0F 2A 40 10 EB) // should be unique aobscanmodule(Sum,KB.exe,8B 43 10 8D 74 24 10) alloc(newmem,$1000) label(newmem1) label(code) label(code1) label(return) label(return1) label(pointer1) label(pointer2) label(pointer3) label(pointer4) label(pointer5) label(sum1) label(sum2) label(sum3) label(sum4) label(sum5) label(flag1) registersymbol(Sum0) registersymbol(Sum) newmem: push ebx push ecx cvtss2si ebx,xmm0 cmp [flag1],1 jne @f push [eax+4] pop [pointer1] mov [sum1],ebx inc [flag1] jmp code @@: cmp [flag1],2 jne @f mov ecx,[eax+4] cmp [pointer1],ecx je code mov [pointer2],ecx mov [sum2],ebx inc [flag1] jmp code @@: cmp [flag1],3 jne @f mov ecx,[eax+4] cmp [pointer1],ecx je code cmp [pointer2],ecx je code mov [pointer3],ecx mov [sum3],ebx inc [flag1] jmp code @@: cmp [flag1],4 jne @f mov ecx,[eax+4] cmp [pointer1],ecx je code cmp [pointer2],ecx je code cmp [pointer3],ecx je code mov [pointer4],ecx mov [sum4],ebx inc [flag1] jmp code @@: cmp [flag1],5 jne @f mov ecx,[eax+4] cmp [pointer1],ecx je code cmp [pointer2],ecx je code cmp [pointer3],ecx je code cmp [pointer4],ecx je code mov [pointer5],ecx mov [sum5],ebx mov [flag1],0 jmp code code: pop ebx pop ecx cvtsi2ss xmm0,[eax+10] jmp return newmem1: mov eax,[ebx+4] cmp [pointer1],eax jne @f mov eax,[sum1] mov [sum1],0 mov [pointer1],0 mov [ebx+10],eax mov [ebx+10c],eax @@: cmp [pointer2],eax jne @f mov eax,[sum2] mov [sum2],0 mov [pointer2],0 mov [ebx+10],eax mov [ebx+10c],eax @@: cmp [pointer3],eax jne @f mov eax,[sum3] mov [sum3],0 mov [pointer3],0 mov [ebx+10],eax mov [ebx+10c],eax @@: cmp [pointer4],eax jne @f mov eax,[sum4] mov [sum4],0 mov [pointer4],0 mov [ebx+10],eax mov [ebx+10c],eax @@: cmp [pointer5],eax jne @f mov eax,[sum5] mov [sum5],0 mov [pointer5],0 mov [ebx+10],eax mov [ebx+10c],eax code1: mov eax,[ebx+10] lea esi,[esp+10] jmp return1 flag1: dd 1 pointer1: dd 0 pointer2: dd 0 pointer3: dd 0 pointer4: dd 0 pointer5: dd 0 sum1: dd 0 sum2: dd 0 sum3: dd 0 sum4: dd 0 sum5: dd 0 Sum0: jmp newmem return: Sum: jmp newmem1 db 90 90 return1: [DISABLE] Sum0: db F3 0F 2A 40 10 Sum: db 8B 43 10 8D 74 24 10 unregistersymbol(pointer1) unregistersymbol(pointer2) unregistersymbol(pointer3) unregistersymbol(pointer4) unregistersymbol(pointer5) unregistersymbol(sum1) unregistersymbol(sum2) unregistersymbol(sum3) unregistersymbol(sum4) unregistersymbol(sum5) unregistersymbol(Sum0) unregistersymbol(Sum) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "KB.exe"+195533 "KB.exe"+195514: 68 C8 E9 FD 00 - push KB.exe+BDE9C8 "KB.exe"+195519: 68 9C E9 FD 00 - push KB.exe+BDE99C "KB.exe"+19551E: 6A 00 - push 00 "KB.exe"+195520: 50 - push eax "KB.exe"+195521: E8 7C CD 28 00 - call KB.exe+4222A2 "KB.exe"+195526: 8B 40 04 - mov eax,[eax+04] "KB.exe"+195529: 83 C4 14 - add esp,14 "KB.exe"+19552C: 85 C0 - test eax,eax "KB.exe"+19552E: 74 0A - je KB.exe+19553A "KB.exe"+195530: 8B 40 70 - mov eax,[eax+70] // ---------- INJECTING HERE ---------- "KB.exe"+195533: F3 0F 2A 40 10 - cvtsi2ss xmm0,[eax+10] // ---------- DONE INJECTING ---------- "KB.exe"+195538: EB 08 - jmp KB.exe+195542 "KB.exe"+19553A: F3 0F 10 05 00 DA FD 00 - movss xmm0,[KB.exe+BDDA00] "KB.exe"+195542: F3 0F 11 44 24 04 - movss [esp+04],xmm0 "KB.exe"+195548: D9 44 24 04 - fld dword ptr [esp+04] "KB.exe"+19554C: 51 - push ecx "KB.exe"+19554D: 8D 4C 24 04 - lea ecx,[esp+04] "KB.exe"+195551: D9 1C 24 - fstp dword ptr [esp] "KB.exe"+195554: E8 67 25 0C 00 - call KB.exe+257AC0 "KB.exe"+195559: B8 01 00 00 00 - mov eax,00000001 "KB.exe"+19555E: 83 C4 08 - add esp,08 } { // ORIGINAL CODE - INJECTION POINT: "KB.exe"+190C38 "KB.exe"+190C20: 5E - pop esi "KB.exe"+190C21: 5B - pop ebx "KB.exe"+190C22: 8B E5 - mov esp,ebp "KB.exe"+190C24: 5D - pop ebp "KB.exe"+190C25: C2 10 00 - ret 0010 "KB.exe"+190C28: B9 84 5F F8 00 - mov ecx,KB.exe+B85F84 "KB.exe"+190C2D: 8B C7 - mov eax,edi "KB.exe"+190C2F: E8 5C 3F E9 FF - call KB.exe+24B90 "KB.exe"+190C34: 84 C0 - test al,al "KB.exe"+190C36: 74 36 - je KB.exe+190C6E // ---------- INJECTING HERE ---------- "KB.exe"+190C38: 8B 43 10 - mov eax,[ebx+10] "KB.exe"+190C3B: 8D 74 24 10 - lea esi,[esp+10] // ---------- DONE INJECTING ---------- "KB.exe"+190C3F: C7 44 24 10 00 00 00 00 - mov [esp+10],00000000 "KB.exe"+190C47: E8 64 41 E9 FF - call KB.exe+24DB0 "KB.exe"+190C4C: 8B 00 - mov eax,[eax] "KB.exe"+190C4E: 8B 75 0C - mov esi,[ebp+0C] "KB.exe"+190C51: 89 06 - mov [esi],eax "KB.exe"+190C53: 85 C0 - test eax,eax "KB.exe"+190C55: 74 03 - je KB.exe+190C5A "KB.exe"+190C57: FF 40 0C - inc [eax+0C] "KB.exe"+190C5A: 8D 4C 24 10 - lea ecx,[esp+10] "KB.exe"+190C5E: E8 0D 32 E7 FF - call KB.exe+3E70 } Видео: Изменено 1 августа, 2016 пользователем Garik66 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения