Перейти к содержанию

Train Me By Taiwan


Taiwan

Рекомендуемые сообщения

И так: накатал тренер - как, для новичков - так и для более опытных.

 

GfoJ.png

 

Задача: Заморозить таймер/значение.

Примечание: каждые 30 секунд, значение меняется! 

 

Не много от себя:

Соответственно, тренер запакован, но запакован по умному! то есть: импульсивная память, и отладчики не тронуты, но в самой памяти есть, и свои хитрости/обманные маневры, но к самому паку - не какого отношение это не имеет. Пак был предназначен для скрытия имен процедур и их последовательности.

По сути, с этой задачей справиться смогут, люди с хорошей логической подготовкой + внимательностью, а остальное дело рук. 

 

Скачать

 

 

Train Me [v1.0] By Taiwan x32 = https://virustotal.com/ru/file/71dba2e04c4f901e76f6114ef038a5f8e13daf532046bb7a78170dfba20873d4/analysis/1487641373/

Train Me [v1.0] By Taiwan x64 = https://virustotal.com/ru/file/af7d7a0a7d88499d42427efb062eb06e48fd913b6d15d06ab0cf637f3fe5d620/analysis/1487641753/

 

 

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

8 часов назад, Taiwan сказал:

Задача: Заморозить таймер/значение.

Что то я не понял основной цели... 

Сам таймер ищется делов нет не что, но а цель то какая ? что бы заморозить его так, что бы даже значения что ли не менялись ? 

Или просто что бы таймер не работал :) 

Если просто так - то вот тут всё. 

Скрытый текст

{
// ORIGINAL CODE - INJECTION POINT: "Train Me [v1.0] By Taiwan x32.exe"+1D81EE

"Train Me [v1.0] By Taiwan x32.exe"+1D81D8: 55                             -  push ebp
"Train Me [v1.0] By Taiwan x32.exe"+1D81D9: 8B EC                          -  mov ebp,esp
"Train Me [v1.0] By Taiwan x32.exe"+1D81DB: 6A 00                          -  push 00
"Train Me [v1.0] By Taiwan x32.exe"+1D81DD: 53                             -  push ebx
"Train Me [v1.0] By Taiwan x32.exe"+1D81DE: 8B D8                          -  mov ebx,eax
"Train Me [v1.0] By Taiwan x32.exe"+1D81E0: 33 C0                          -  xor eax,eax
"Train Me [v1.0] By Taiwan x32.exe"+1D81E2: 55                             -  push ebp
"Train Me [v1.0] By Taiwan x32.exe"+1D81E3: 68 38 82 5D 00                 -  push "Train Me [v1.0] By Taiwan x32.exe"+1D8238
"Train Me [v1.0] By Taiwan x32.exe"+1D81E8: 64 FF 30                       -  push fs:[eax]
"Train Me [v1.0] By Taiwan x32.exe"+1D81EB: 64 89 20                       -  mov fs:[eax],esp
// ---------- INJECTING HERE ----------
"Train Me [v1.0] By Taiwan x32.exe"+1D81EE: FF 0D F4 40 64 00              -  dec ["Train Me [v1.0] By Taiwan x32.exe"+2440F4]
// ---------- DONE INJECTING  ----------
"Train Me [v1.0] By Taiwan x32.exe"+1D81F4: 8D 55 FC                       -  lea edx,[ebp-04]
"Train Me [v1.0] By Taiwan x32.exe"+1D81F7: A1 F4 40 64 00                 -  mov eax,["Train Me [v1.0] By Taiwan x32.exe"+2440F4]
"Train Me [v1.0] By Taiwan x32.exe"+1D81FC: E8 D7 AC E4 FF                 -  call "Train Me [v1.0] By Taiwan x32.exe"+22ED8
"Train Me [v1.0] By Taiwan x32.exe"+1D8201: 8B 55 FC                       -  mov edx,[ebp-04]
"Train Me [v1.0] By Taiwan x32.exe"+1D8204: 8B 83 EC 03 00 00              -  mov eax,[ebx+000003EC]
"Train Me [v1.0] By Taiwan x32.exe"+1D820A: E8 C1 D7 F4 FF                 -  call "Train Me [v1.0] By Taiwan x32.exe"+1259D0
"Train Me [v1.0] By Taiwan x32.exe"+1D820F: 83 3D F4 40 64 00 00           -  cmp dword ptr ["Train Me [v1.0] By Taiwan x32.exe"+2440F4],00
"Train Me [v1.0] By Taiwan x32.exe"+1D8216: 75 0A                          -  jne "Train Me [v1.0] By Taiwan x32.exe"+1D8222
"Train Me [v1.0] By Taiwan x32.exe"+1D8218: C7 05 F4 40 64 00 1E 00 00 00  -  mov ["Train Me [v1.0] By Taiwan x32.exe"+2440F4],0000001E
"Train Me [v1.0] By Taiwan x32.exe"+1D8222: 33 C0                          -  xor eax,eax
}

 

А если надо что бы и не менялись прям значения.... - то щас ещо разок гляну. 

PS: 

Или там надо остановить таймер так - что бы сразу и значение не изменялось после этого ? Я просто что то не пойму, да ну и ладно посже ещо гляну... (Если не кто до меня не сделает)  

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, LIRW сказал:

А если надо что бы и не менялись прям значения.... - то щас ещо разок гляну. 

 

Это я и имел виду. А на счет простоты: (со временем, буду усложнять тренер), кстати, если есть возможность - запиши видео, о готовом решении задачи. 

Изменено пользователем Taiwan
Ссылка на комментарий
Поделиться на другие сайты

Написал скрипт на заморозку таймера пока

 

Скрытый текст

{ Game   : Train Me [v1.0] By Taiwan x64.exe
  Version: 
  Date   : 2017-02-21
  Author : Dison

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(Time,Train Me [v1.0] By Taiwan x64.exe,83 2D A4 A7 0D 00 01) // should be unique
alloc(newmem,$1000,"Train Me [v1.0] By Taiwan x64.exe"+2C0045)
registersymbol(Time)
label(code)
label(return)

newmem:

code:
  add dword ptr ["Train Me [v1.0] By Taiwan x64.exe"+39A7F0],01
  sub dword ptr ["Train Me [v1.0] By Taiwan x64.exe"+39A7F0],01
  jmp return

Time:
  jmp code
  nop
  nop
return:

[DISABLE]

Time:
  db 83 2D A4 A7 0D 00 01

unregistersymbol(Time)
dealloc(newmem)

 

 

Изменено пользователем Dison
Ссылка на комментарий
Поделиться на другие сайты

Вот чтобы очки не менялись

 

Скрытый текст

{ Game   : Train Me [v1.0] By Taiwan x64.exe
  Version: 
  Date   : 2017-02-21
  Author : Dison

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(StopScore,Train Me [v1.0] By Taiwan x64.exe,69 C0 05 84 08 08) // should be unique
alloc(newmem,$1000,"Train Me [v1.0] By Taiwan x64.exe"+9966)
registersymbol(StopScore)
label(code)
label(return)

newmem:

code:
  imul eax,eax,08088405
  jmp return

StopScore:
    db 90 90 90 90 90 90
return:

[DISABLE]

StopScore:
  db 69 C0 05 84 08 08

unregistersymbol(StopScore)
dealloc(newmem)

 

 

Только вот со 100 меняется на другое число, а после уже не меняется.

Нужно разбираться

Изменено пользователем Dison
Ссылка на комментарий
Поделиться на другие сайты

Там можно и не морозить 2 байта затер и будет максимальная запись во время.  Я по посже погляжу - щас не много занят, то одному - то другому сделай. Надо сюда слать всех :D Но опять же смысл - редко что то, кто то берется за игры в запросах. Я сюда слал людей с PG но потом мне же пишут - мол как написал запрос, так и висит - толку мол нету :(!  В не ловкое положение меня поставили :lol: пришлось самому делать.  

 

PS: 

Щас решил попробовать вот чего... Значение же по сути меняется каждые 30 секунд.. Но что то не ровно каждые 30 оно меняет, но не в этом суть... А в том, что подумал, а если записать вот так вот. 

[ENABLE]
aobscanmodule(Time,Train Me [v1.0] By Taiwan x32.exe,C7 05 F4 40 64 00 1E 00 00 00 33) // should be unique
Time:
  db C7 05 F4 40 64 00 99 99 99 99
registersymbol(Time)
[DISABLE]
Time:
  db C7 05 F4 40 64 00 1E 00 00 00
unregistersymbol(Time)

То есть там же идет сравнение с нулем и идет таймер - и когда значение равно 0 - туда идет запись 31... Ну так я и подумал,а если туда записать к примеру 9999999 - то до нового года можно ждать следующую смену времени, а нет - не вышло. Как буд то часы не зависимы от значения очков. Но щас ещо поковыряюсь не множко... Но если опять же подумать логически, то значение то само по себе тоже меняться не будет, что то же его меняет... Вот и надо найти что...

Ссылка на комментарий
Поделиться на другие сайты

Я сделал скрипт замораживающий число. Изначально стоит 100 там. Если активровать скрипт то 100 меняется на другое значение единоразово, а после уже не меняется замораживается. Выше же скинул скрипт да x64 версии...

Изменено пользователем Dison
Ссылка на комментарий
Поделиться на другие сайты

10 минуту назад, Dison сказал:

Я сделал скрипт замораживающий число. Изначально стоит 100 там. Если активровать скрипт то 100 меняется на другое значение единоразово, а после уже не меняется замораживается. Выше же скинул скрипт да x64 версии...

 

1 час назад, LIRW сказал:

То есть там же идет сравнение с нулем и идет таймер - и когда значение равно 0 - туда идет запись 31... Ну так я и подумал,а если туда записать к примеру 9999999 - то до нового года можно ждать следующую смену времени, а нет - не вышло. Как буд то часы не зависимы от значения очков. Но щас ещо поковыряюсь не множко... Но если опять же подумать логически, то значение то само по себе тоже меняться не будет, что то же его меняет... Вот и надо найти что...

 

Ребята респект вам за попытки, я подожду до завтра - может и больше! как вы сами решите. Если не получится - я запишу маленькое видео с пояснениями, записал бы, больше но увы канал не позволяет(

С таким каналом - заливаю 250 Мб на Ютуб минимум 1.5 часа... притом что - приходится выходить из Скайпа,ТС-а и т.д так как, не возможно сидеть при загрузки видео.

GgP3.png 

Изменено пользователем Taiwan
Ссылка на комментарий
Поделиться на другие сайты

Задача выполнена!

Таймер и счет заморожены.

 

Условие задания задай корректно, а то будет как в моем скрипте.:D

 

 

 

x86 скрипт

Скрытый текст

{ Game   : Train Me [v1.0] By Taiwan x32.exe
  Version: 
  Date   : 2017-02-22
  Author : Alexander

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(GetRect,win32u.dll,B8 07 10 0C 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  mov eax,000C1007
  jmp return

GetRect:
  ret 0C
  nop
  nop
return:
registersymbol(GetRect)

[DISABLE]

GetRect:
  db B8 07 10 0C 00

unregistersymbol(GetRect)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "win32u.dll"+24C0

"win32u.dll"+24A0: B8 05 10 00 00  -  mov eax,00001005
"win32u.dll"+24A5: BA 60 6C 4A 76  -  mov edx,win32u.dll+6C60
"win32u.dll"+24AA: FF D2           -  call edx
"win32u.dll"+24AC: C2 08 00        -  ret 0008
"win32u.dll"+24AF: 90              -  nop 
"win32u.dll"+24B0: B8 06 10 03 00  -  mov eax,00031006
"win32u.dll"+24B5: BA 60 6C 4A 76  -  mov edx,win32u.dll+6C60
"win32u.dll"+24BA: FF D2           -  call edx
"win32u.dll"+24BC: C2 04 00        -  ret 0004
"win32u.dll"+24BF: 90              -  nop 
// ---------- INJECTING HERE ----------
"win32u.dll"+24C0: B8 07 10 0C 00  -  mov eax,000C1007
// ---------- DONE INJECTING  ----------
"win32u.dll"+24C5: BA 60 6C 4A 76  -  mov edx,win32u.dll+6C60
"win32u.dll"+24CA: FF D2           -  call edx
"win32u.dll"+24CC: C2 0C 00        -  ret 000C
"win32u.dll"+24CF: 90              -  nop 
"win32u.dll"+24D0: B8 08 10 00 00  -  mov eax,00001008
"win32u.dll"+24D5: BA 60 6C 4A 76  -  mov edx,win32u.dll+6C60
"win32u.dll"+24DA: FF D2           -  call edx
"win32u.dll"+24DC: C2 04 00        -  ret 0004
"win32u.dll"+24DF: 90              -  nop 
"win32u.dll"+24E0: B8 09 10 00 00  -  mov eax,00001009
}

 

 

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, Dison сказал:

Я сделал скрипт замораживающий число. Изначально стоит 100 там. Если активровать скрипт то 100 меняется на другое значение единоразово, а после уже не меняется замораживается. Выше же скинул скрипт да x64 версии...

Да Dison это значение то я находил - только в x32 версии.. Я тоже так умею :) Но я хотел по лучше сделать как бы. А тут уже сделали... :( Время я нашел с возможностью редактирования прям и записи туда сколько угодно. Так же максимальное время нашел - могу его крутить хоть на месяц и будет месяц время идти.. Хотел сделать так же и на значение очков... Следующий раз надо просто что не будь по шибче придумать...  

Это вот когда делать не чего, кто то там в пасьянс играет, а тут можно будет поковыряться в этом деле... Хотя у мня почти не бывает такого, что бы делать было не чего :) но всё же - есть такие моменты...  

PS:

А автору данного аппарата -  надо что не будь по шибче сделать - без обходов подобных способов как постом выше. Или условия - чистых значений, а не так вот!  А если честно - было интересно :rolleyes: спасибо за подобную программу!  

Будем ждать новых.... если таковые ещо конечно есть в планах...  

 

Я пока что сделал вот так вот. Но это ещо не окончательный вариант был - а так наработки. 

Скрытый текст

[ENABLE]
aobscanmodule(Score,Train Me [v1.0] By Taiwan x32.exe,69 93 08 50 63 00 05 84 08 08) // should be unique
Score:
  db 69 93 08 50 63 00 00 00 00 00
registersymbol(Score)
[DISABLE]
Score:
  db 69 93 08 50 63 00 05 84 08 08
unregistersymbol(Score)

[ENABLE]
aobscanmodule(FreezeTime,Train Me [v1.0] By Taiwan x32.exe,FF 0D F4 40 64 00) // should be unique
FreezeTime:
 db 90 90 90 90 90 90
registersymbol(FreezeTime)
[DISABLE]
FreezeTime:
  db FF 0D F4 40 64 00
unregistersymbol(FreezeTime)

 

 

Ссылка на комментарий
Поделиться на другие сайты

16 минуту назад, partoftheworlD сказал:

Задача выполнена!

Условие задания задай корректно, а то будет как в моем скрипте, задача как бы выполнена и как бы нет, смотря как посмотреть:D

 

Да, задача выполнена, скорее всего по моей вине! Так как, в 64-ом билде, я скрыл имена процедур и инициализацию масок адресов - а в 32-ом билде забыл. А потому, ждите версию (2.0) соответственно за успешное выполнение задачи - пользователь получит от меня подарок. Я хочу, еще раз вас - (partoftheworlD, LIRW ну и конечно Dison) поблагодарить за нахождения времени на мой, мини тренер.   

 

22 часа назад, Taiwan сказал:

Задача: Заморозить таймер/значение.

 

А что, тут не корректно? так уж и быть - в следующий раз буду место дроби - (/) ставить букву "и" что бы было понятнее:-D и в итоге получится: "Задача: Заморозить таймер и значение".

 

Информация из глубинки!

 

Исходник тренера:

Скрытый текст

var
  TrainMe_Form: TTrainMe_Form;
  t:integer;

implementation

{$R *.dfm}

procedure TTrainMe_Form.bhTimer(Sender: TObject);
var
int2   : Integer;
i     : Integer;
begin
for i := 1 to (5+(7)) do
  begin
    int2 := 1 + (Random(100300)+15);
    Label1.Caption := IntToStr(int2);
end;
end;

procedure TTrainMe_Form.FormCreate(Sender: TObject);
begin
  t:=30;
  Label3.Caption := IntToStr(t);
  Timer1.Enabled:=true;
end;

procedure TTrainMe_Form.Timer1Timer(Sender: TObject);
begin
t:=t-1;
Label3.Caption := IntToStr(t);
if t=0 then
  begin
    t:=30;
  end;
end;

end.

 

 

Код думаю объяснять не надо кому не нужно, кстати "LIRW" ты правильно мыслил, но есть один большой "-", может у вас в C,C++.C# и т.д - да и вообще в "Visual Studio" индексация одна, в Delphi чуть-чуть другая! особенно в прямых выводах. То есть: если в условии, глобальная переменная ровняется 0... это значит 0 а не -1 или +1... как у тебя вышло 31 место 30.

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Taiwan сказал:

А что, тут не корректно? так уж и быть - в следующий раз буду место дроби - (/) ставить букву "и" что бы было понятнее:-D и в итоге получится: "Задача: Заморозить таймер и значение".

 

То что, я например, отключил обновление отрисовки вроде бы NtUserValidate чего-то там, забыл как называется полностью, а раз таймер не обновляется, то не будет меняться значение таймера, а раз так то, и счет не будет изменяться, как по мне это не совсем правильное решение, но под условие задачи подходит. В следующий раз напиши, что можно использовать, а что нет, я это имел ввиду под "некорректным" заданием, а то будут делать как я. После поиска значения таймера понял, что проще будет по другому сделать, как мне кажется в traineme, crackme, keygenme необходима конкретика в заданий это усложнит его выполнение.

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.