Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
327 / 252 / 58
Регистрация: 12.12.2012
Сообщений: 2,048
1

Убить участок вызова?

14.11.2013, 05:23. Показов 659. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здрасте. Мне надо заблокировать вызов участка этого кода,мне надо какие-то байты заменить на nop или как тут быть?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.text:1008FEE4                               loc_1008FEE4:                           ; CODE XREF: sub_1008F7A0+519j
.text:1008FEE4 F6 C4 41                                      test    ah, 41h
.text:1008FEE7 0F 8A 4D 06 00 00                             jp      loc_1009053A
.text:1008FEED 8B 45 74                                      mov     eax, [ebp+74h]
.text:1008FEF0 85 C0                                         test    eax, eax
.text:1008FEF2 0F 85 42 06 00 00                             jnz     loc_1009053A
.text:1008FEF8 8A 45 7E                                      mov     al, [ebp+7Eh]
.text:1008FEFB 84 C0                                         test    al, al
.text:1008FEFD 74 33                                         jz      short loc_1008FF32
.text:1008FEFF 68 B4 AD 10 10                                push    offset aGrenade_0 ; "grenade"
.text:1008FF04 6A 00                                         push    0
.text:1008FF06 E8 65 33 03 00                                call    sub_100C3270
.text:1008FF0B 83 C4 08                                      add     esp, 8
.text:1008FF0E 85 C0                                         test    eax, eax
.text:1008FF10 74 20                                         jz      short loc_1008FF32
Пробовал заменить первые 5 байтов на

const unsigned char patch[] = {0x90, 0x90, 0x90, 0x90,0xE9};

У меня этот участок стал вызываться все время..когда ему не надо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.11.2013, 05:23
Ответы с готовыми решениями:

Сессию нужно убить memberid нужно принудительно убить и страницы... как ?
<SCRIPT LANGUAGE=VBScript RUNAT=Server> SUB Session_OnStart Session.Timeout = 3 ...

нужно чтобы функция располагалась до ее вызова, после ее вызова и в другом файле. Как это сделать?
#include <iostream> #include <conio.h> using namespace std; int n, *c; void fun(int a,...

После вызова печати, я хочу попасть на ту форму что вызывала, и на то поле где была до вызова
Например я в форме на каком-то поле Вызываю с формы отчет, потом закрываю отчет, и моя форма...

Участок B кода выполняется позже, чем участок A кода, но почему-то B влияет на работоспособность A! Почему?
Друзья! То есть суть такая, создаю объект и в конструктор передаю имя процесса и хэндл снимка...

9
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
14.11.2013, 05:42 2
pEntity,
а почему блокируя переход подменяется 5 байт если сравнение и переход занимают 9 байт?
адрескодировкакоманда
.text:1008FEE4 F6 C4 41 test ah, 41h
.text:1008FEE7 0F 8A 4D 06 00 00 jp loc_1009053A
меняй весь участок на НОПы
1
programmer
2391 / 525 / 69
Регистрация: 01.06.2011
Сообщений: 3,639
14.11.2013, 05:52 3
можно сразу безусловный переход впихнуть.
2
327 / 252 / 58
Регистрация: 12.12.2012
Сообщений: 2,048
14.11.2013, 05:57  [ТС] 4
const unsigned char patch[] = {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};

Я потерпел краш при вызове функции.

С безусловным

const unsigned char ret[] = {0xE9};

Функция стала вызываться когда ей не надо очень часто.
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
14.11.2013, 05:59 5
pEntity,
возможна скрытая защита, построенная на контрольной сумме "критических" участков кода
0
327 / 252 / 58
Регистрация: 12.12.2012
Сообщений: 2,048
14.11.2013, 06:01  [ТС] 6
Цитата Сообщение от Mikl___ Посмотреть сообщение
pEntity,
возможна скрытая защита, построенная на контрольной сумме "критических" участков кода
Мне сказали,что этот участок кода блокировать нужно с помощью 0x90, 0x90, 0x90, 0x90, 0xE9

У них все работает,а у меня нет )
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
14.11.2013, 06:26 7
pEntity,
попробуй по адресу .text:1008FEE7 вместо 0F 8A поставить 90 E9 - получится, как написал Thread "сразу безусловный переход впихнуть" на loc_1009053A
1
327 / 252 / 58
Регистрация: 12.12.2012
Сообщений: 2,048
14.11.2013, 07:02  [ТС] 8
Спасибо,вечером испытаю. А подскажите еще

.text:1008FEE4 F6 C4 41 test ah, 41h

41h заменить подсказали на нуль,нуль это nop и есть? То есть мой патч будет 0xF6,0xC4,0x90 ?
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
14.11.2013, 07:10 9
pEntity,
41h ASCII код буквы "А", а что подразумевают под "заменить на нуль" F6 C4 00 test ah,0 или F6 C4 30 test ah,"0" я не знаю, скорее F6 C4 00, код нопа равен 90
1
327 / 252 / 58
Регистрация: 12.12.2012
Сообщений: 2,048
14.11.2013, 16:27  [ТС] 10
Что-то блок не вышел.
Три участка кода:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
.text:1008FEE4                               loc_1008FEE4:                           ; CODE XREF: sub_1008F7A0+519j
.text:1008FEE4 F6 C4 41                                      test    ah, 41h
.text:1008FEE7 0F 8A 4D 06 00 00                             jp      loc_1009053A
.text:1008FEED 8B 45 74                                      mov     eax, [ebp+74h]
.text:1008FEF0 85 C0                                         test    eax, eax
.text:1008FEF2 0F 85 42 06 00 00                             jnz     loc_1009053A
.text:1008FEF8 8A 45 7E                                      mov     al, [ebp+7Eh]
.text:1008FEFB 84 C0                                         test    al, al
.text:1008FEFD 74 33                                         jz      short loc_1008FF32
.text:1008FEFF 68 B4 AD 10 10                                push    offset aGrenade_0 ; "grenade"
.text:1008FF04 6A 00                                         push    0
.text:1008FF06 E8 65 33 03 00                                call    sub_100C3270
.text:1008FF0B 83 C4 08                                      add     esp, 8
.text:1008FF0E 85 C0                                         test    eax, eax
.text:1008FF10 74 20                                         jz      short loc_1008FF32
.text:1008FF12
.text:1008FF12                               loc_1008FF12:                           ; CODE XREF: sub_1008F7A0+790j
.text:1008FF12 8A 88 81 01 00 00                             mov     cl, [eax+181h]
.text:1008FF18 84 C9                                         test    cl, cl
.text:1008FF1A 0F 85 1A 06 00 00                             jnz     loc_1009053A
.text:1008FF20 68 B4 AD 10 10                                push    offset aGrenade_0 ; "grenade"
.text:1008FF25 50                                            push    eax
.text:1008FF26 E8 45 33 03 00                                call    sub_100C3270
.text:1008FF2B 83 C4 08                                      add     esp, 8
.text:1008FF2E 85 C0                                         test    eax, eax
.text:1008FF30 75 E0                                         jnz     short loc_1008FF12
.text:1008FF32
.text:1008FF32                               loc_1008FF32:                           ; CODE XREF: sub_1008F7A0+75Dj
.text:1008FF32                                                                       ; sub_1008F7A0+770j
.text:1008FF32 D9 05 54 E0 10 10                             fld     flt_1010E054
.text:1008FF38 D8 1D 18 23 0F 10                             fcomp   ds:flt_100F2318
.text:1008FF3E DF E0                                         fnstsw  ax
.text:1008FF40 F6 C4 44                                      test    ah, 44h
.text:1008FF43 7B 1B                                         jnp     short loc_1008FF60
.text:1008FF45 FF 15 6C 0D 16 10                             call    dword_10160D6C
.text:1008FF4B 85 C0                                         test    eax, eax
.text:1008FF4D 75 11                                         jnz     short loc_1008FF60
.text:1008FF4F 50                                            push    eax
.text:1008FF50 E8 AB 6A FA FF                                call    sub_10036A00
.text:1008FF55 83 C4 04                                      add     esp, 4
.text:1008FF58 3B C7                                         cmp     eax, edi
.text:1008FF5A 0F 84 DA 05 00 00                             jz      loc_1009053A
Из декомпиляции .c файла:

C++
1
2
3
        if ( flt_1010E054 != 0.0 && !dword_10160D6C() && sub_10036A00(0) == 1 )
          goto LABEL_181;
        sub_100C3270(0, "grenade");

Мне нужно,чтоб не вызвалось условие if ( flt_1010E054 != 0.0 && !dword_10160D6C() && sub_10036A00(0) == 1 )


Это по сути третий участок кода,который выше. Но говорят нужно заблокировать байты из первого,так как он решает,переходить ли дальнейшему участку кода или нет..


Вобщем это из игры. Вызов конца раунда. Когда время раунда заканчивается. Все варианты выше которые вы мне советовали наоборот еще хуже сделали,теперь у меня раунд кончается каждые 4 секунды всегда..

Добавлено через 1 час 42 минуты
Решено. Заменить третий байт нулем. Была просто ошибка в коде. Большое спасибо за помощь.
0
14.11.2013, 16:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2013, 16:27
Помогаю со студенческими работами здесь

вертолёт Bosch WAB2428SCE/05 выгорел участок модуля, выгорел участок модуля (управление УБЛ)
Всем привет! На днях попала в ремонт СМА с классическим диагнозом "не включается". Проверил...

Ошибка вызова потока "Адресат вызова создал исключения"
при создании потока и вызове метода из потока выдает ошибку "Адресат вызова создал исключения", в...

Как поймать момент входящего вызова и номер телефона входящего вызова?
всем привет, у меня странный вопрос, есть стационарный телефон, подключенный через четырехканальный...

оформить решение в виде функции следующими способами: 1. функция расположена после ее вызова; 2. функция расположена после до ее вызова; 3. функ
оформить решение в виде функции следующими способами: 1. функция расположена после ее вызова;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru