Доброе время суток! - Столкнулся с такой проблемой: Есть программа 1.exe, она изменяет '1 байт' в процессе программы 2.exe, что приводит к ускорению внутреннего времени в процессе 2.exe. (То есть, все действиям в этом процессе происходят быстрее, чем должны) - Сканирование по средствам всяких программ по выявлению хуков (RootKit_Unhooker и т.д.) не выявил хуков. - Воспользовался программой 'HookShark', которая обнаружила изменения в процессе 2.exe: Код (Text): Hooked Object || Hook Redirection/Info || Type Of Hook //--------------------------------------------------------------------------- [3324] 2.exe -> 2+0x2621B2 || 0x6621B2 || Inline - Custom Patch [1 bytes] [SUB [ECX+0x77ECE815],CX -> AND [ECX+0x77ECE815],CX] - На сколько мне позволяет логика, я понимаю, что этот байт влияет на ход внутреннего времени в процессе 2.exe; - Изменяет задержку проигрывания анимации или что-то в этом духе. - Но, как это отследить? P.S. -> Программа запакована упаковщиком 'Themida', так что возможности поработать через дебагер нету =( - Если есть какие-то идеи, прошу высказывать, так как зашел в тупик =(
MuForum Что ты понимаешь под "внутренним временем процесса" ? Собственно время в процессе, которое измеряется от начала запуска оси - это несколько слов в UsSharedData, которые изменяются ядром периодически(тики). Процессорное время, или что это ? 0x2621B2 - странный адрес, обычно модуля грузятся выше. Отладчик для того и создан, чтобы динамически код отлаживать, не следует путать с дизассемблерами.
Clerk - Программа 1.exe ускоряет все действия в процессе 2.exe - То есть, все анимационные действия происходят быстрее. Все 3D анимации быстрее выполняют свои действия.
- Как-то не подумал об это, сейчас проверю и отвечу. P.S. -> Программа 1.exe изменяет значение в памяти процесса 2.exe: Код (Text): sub edx, 28 28 - Меняется вот это значение. # Добавлено: - У программы 1.exe есть 6 режимов: Код (Text): 0 - normal 1 - Level1 2 - Level2 ... 5 - Level5 - Если считать значение этого байта в этих режимах, то получится следующая табличка: Код (Text): 0 - 40 (Это когда нормальный режим) 1 - 32 (Немного быстрее) 2 - 23 (Ещё быстрее) 3 - 16 (Достаточно быстро) 4 - 6 (Быстро) 5 - 2 (Очень быстро) - Если я правильно понимаю, то скорее всего это значение задержки потока в мСек? - Это обратнопропорциональная схема приоритетов потока?
MuForum В принципе вполне логично предположить что в этом регистре содержится число миллисекунд(например) для задержки, что если увеличить это значение ?
- Ты прав, если увеличить это значение, то все действия происходящие в этом процессе(или потоке) замедляются. - То есть, обратная пропорциональность. - Видимо это значение задержки в мСек, как было сказано выше. # Добавлено: - Такс, когда мы точно узнали, что это значение задержки процесса(или потока) в мСек, возникает другой вопрос: Как программно узнать адрес этого байта отвечающего за задержку процесса(или потока), чтобы в дальнейшем сверять. ?
MuForum Смотри какой код до и после этой инструкции. Нужно знать что с этим значением происходит. ЗЫ: Лучше новый пост создавай, не дописывай - я уже совсем запутолся..
Clerk, я в ASM плаваю... - Вот кусок кода до и после инструкции: SUB EDX, 28 Код (Text): 00662167 |. 8B0D 44E95A07 |MOV ECX, [DWORD DS:75AE944] 0066216D |. 83E9 01 |SUB ECX, 1 00662170 |. 890D 44E95A07 |MOV [DWORD DS:75AE944], ECX 00662176 |> 8B15 C047AF07 |MOV EDX, [DWORD DS:7AF47C0] 0066217C |. 83C2 01 |ADD EDX, 1 0066217F |. 8915 C047AF07 |MOV [DWORD DS:7AF47C0], EDX 00662185 |. A1 C047AF07 |MOV EAX, [DWORD DS:7AF47C0] 0066218A |. 25 1F000080 |AND EAX, 8000001F 0066218F |. 79 05 |JNS SHORT ==Main.00662196 00662191 |. 48 |DEC EAX 00662192 |. 83C8 E0 |OR EAX, FFFFFFE0 00662195 |. 40 |INC EAX 00662196 |> A3 C047AF07 |MOV [DWORD DS:7AF47C0], EAX 0066219B |. 8B0D 3827B007 |MOV ECX, [DWORD DS:7B02738] 006621A1 |. 83C1 01 |ADD ECX, 1 006621A4 |. 890D 3827B007 |MOV [DWORD DS:7B02738], ECX 006621AA |. 8B15 E8EC7700 |MOV EDX, [DWORD DS:77ECE8] 006621B0 |. 83EA 28 |SUB EDX, 28 006621B3 |. 8915 E8EC7700 |MOV [DWORD DS:77ECE8], EDX 006621B9 |. A1 8C27B007 |MOV EAX, [DWORD DS:7B0278C] 006621BE |. 8985 A0FCFFFF |MOV [DWORD SS:EBP-360], EAX 006621C4 |. 8B8D A0FCFFFF |MOV ECX, [DWORD SS:EBP-360] 006621CA |. 51 |PUSH ECX 006621CB |. 68 1CF47700 |PUSH ==Main.0077F41C ; ASCII "%d" 006621D0 |. 8D95 30FEFFFF |LEA EDX, [DWORD SS:EBP-1D0] 006621D6 |. 52 |PUSH EDX 006621D7 |. A1 8C27B007 |MOV EAX, [DWORD DS:7B0278C] 006621DC |. 83C0 01 |ADD EAX, 1 006621DF |. A3 8C27B007 |MOV [DWORD DS:7B0278C], EAX 006621E4 |. E8 3F730D00 |CALL ==Main.00739528 006621E9 |. 83C4 0C |ADD ESP, 0C 006621EC |.^ E9 BCF8FFFF \JMP ==Main.00661AAD 006621F1 |> 33C9 XOR ECX, ECX 006621F3 |. 8A0D A8EEAF07 MOV CL, [BYTE DS:7AFEEA8] 006621F9 |. 85C9 TEST ECX, ECX 006621FB |. 74 05 JE SHORT ==Main.00662202 006621FD |. E9 A6150000 JMP ==Main.006637A8 00662202 |> 8B55 BC MOV EDX, [DWORD SS:EBP-44] 00662205 |. 52 PUSH EDX 00662206 |. 8B45 B8 MOV EAX, [DWORD SS:EBP-48] 00662209 |. 50 PUSH EAX 0066220A |. E8 6310E0FF CALL ==Main.00463272 0066220F |. 8BC8 MOV ECX, EAX ; | 00662211 |. E8 D825E0FF CALL ==Main.004647EE ; \==Main.004647EE 00662216 |. E8 6F300400 CALL ==Main.006A528A 0066221B |. 8D8D A4FEFFFF LEA ECX, [DWORD SS:EBP-15C] 00662221 |. 51 PUSH ECX ; /pLocaltime 00662222 |. FF15 B8617500 CALL [DWORD DS:<&KERNEL32.GetLocalTime>] ; \GetLocalTime 00662228 |. 8B15 D0E9AF07 MOV EDX, [DWORD DS:7AFE9D0] 0066222E |. 52 PUSH EDX 0066222F |. 8B85 AEFEFFFF MOV EAX, [DWORD SS:EBP-152] 00662235 |. 25 FFFF0000 AND EAX, 0FFFF 0066223A |. 50 PUSH EAX 0066223B |. 8B8D ACFEFFFF MOV ECX, [DWORD SS:EBP-154] 00662241 |. 81E1 FFFF0000 AND ECX, 0FFFF 00662247 |. 51 PUSH ECX 00662248 |. 8B95 AAFEFFFF MOV EDX, [DWORD SS:EBP-156] 0066224E |. 81E2 FFFF0000 AND EDX, 0FFFF 00662254 |. 52 PUSH EDX 00662255 |. 8B85 A6FEFFFF MOV EAX, [DWORD SS:EBP-15A] 0066225B |. 25 FFFF0000 AND EAX, 0FFFF 00662260 |. 50 PUSH EAX 00662261 |. 68 20F47700 PUSH ==Main.0077F420 ; ASCII "Screen(%02d_%02d-%02d_%02d)-%04d.jpg" 00662266 |. 68 48E8AF07 PUSH ==Main.07AFE848 0066226B |. E8 B8720D00 CALL ==Main.00739528 00662270 |. 83C4 1C ADD ESP, 1C
0x77ECE8 - там эта константа, посмотри адрес загрузки модуля, в катором находится эта переменная(модуль ли это) ? Интересно узнать если это модуль, то имя секции, где эта переменная. Попробуй её изменить там.
Clerk - Почисть свою почту пожалуйста, так как я не могу тебе отправить сообщение. P.S. -> Может всё таки зайдёшь в ICQ?