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

Изменить в коде проверку на версию

11.02.2017, 22:00. Показов 708. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет ребят имеется код который проверяет старую версию "GetVer" и новую "Init"
Собственно что нужно изменить в коде чтобы это проверку избежать
Сам код:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
                 mov     [rsp+148h+var_8], r15
                 cmovnz  rcx, [rsp+148h+lpLibFileName] ; lpLibFileName
                 call    cs:LoadLibraryW
                 mov     cs:qword_142FBB358, rax
                 test    rax, rax
                 jz      loc_141286096
                 lea     rdx, aGetver    ; "GetVer"
                 mov     rcx, rax        ; hModule
                 call    cs:GetProcAddress
                 test    rax, rax
                 jz      loc_141286089
                 call    rax
                 mov     rcx, cs:qword_142FBB358 ; hModule
                 test    rcx, rcx
                 jz      loc_141286096
                 lea     rdx, aInit_6    ; "Init"
                 call    cs:GetProcAddress
                 mov     r15, rax
                 test    rax, rax
                 jz      loc_141286089
                 mov     ecx, cs:dword_1430456C0
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2017, 22:00
Ответы с готовыми решениями:

Как изменить версию comctl32 в runtime: к чему привязана эта информация и как ее изменить
Она видимо привязана к загружаемому модулю, т.к. создавая из DllMain контролы, учитывается версия...

Изменить версию фреймворка
Задача в том, что приложение написано в MSVS 2013, и требует .NET framework 4.5.x, на компьютере...

Как изменить версию C# с 4 на 6?
Изучаю Unity. Создавал проект в Unity 5.6, VS часто ругалась что я слишком много хочу от C# 4 :)....

Комплирует старую версию не учитывая изменения в коде
Помогите ребят.... по незнанию что-то нажал в C# и он стал компилить старую версию не учитывая...

3
Asm/C++/Delphi/Py/PHP/VBA
6528 / 1973 / 228
Регистрация: 14.12.2014
Сообщений: 4,125
Записей в блоге: 12
12.02.2017, 00:50 2
Чтобы не вызывались GetVer и Init что ли? Так как, судя по всему, GetVer не возвращает никаких данных.
Чтобы убрать вызов GetVer, надо убрать строку 12. А вот Init в этом коде не вызывается, вызов идёт где-то дальше, скорее всего, через пару строк. Но там будет тоже либо call rax, либо call r15.
1
1 / 1 / 0
Регистрация: 03.11.2015
Сообщений: 61
19.02.2017, 03:25  [ТС] 3
Цитата Сообщение от Jin X Посмотреть сообщение
Чтобы не вызывались GetVer и Init что ли? Так как, судя по всему, GetVer не возвращает никаких данных.
Чтобы убрать вызов GetVer, надо убрать строку 12. А вот Init в этом коде не вызывается, вызов идёт где-то дальше, скорее всего, через пару строк. Но там будет тоже либо call rax, либо call r15.
А возможно ли как в то в регистре поменять версии rax GetVer и Init?Как я понял они сравниваются и происходит вердикт
А "тупо" занопить вызов функции приводит к крашу программы

Добавлено через 1 минуту
Цитата Сообщение от Jin X Посмотреть сообщение
Чтобы не вызывались GetVer и Init что ли? Так как, судя по всему, GetVer не возвращает никаких данных.
Функция GetVer и Init не должны возвращать никаких данных они их импортируют

Добавлено через 30 минут
Полный код функции:
Assembler
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
sub_1412881C0   proc near               ; CODE XREF: sub_141467FE0+11F5p
                push    rbp
                push    rbx
                lea     rbp, [rsp-48h]
                sub     rsp, 148h
                mov     rax, cs:__security_cookie
                xor     rax, rsp
                mov     [rbp+30h], rax
                mov     rbx, rcx
                test    rcx, rcx
                jz      loc_141288579
                cmp     dword ptr [rcx+140h], 1
                jz      loc_141288579
                mov     edx, [rcx+0Ch]
                mov     [rsp+170h], rdi
                mov     cs:dword_142F68BE8, edx
                call    sub_140C4D3A0
                mov     rcx, rbx
                mov     cs:dword_142F68BEC, eax
                mov     rax, [rbx]
                call    qword ptr [rax+278h]
                mov     ecx, eax
                mov     edx, eax
                and     ecx, 0FF00h
                shl     edx, 10h
                add     edx, ecx
                mov     ecx, eax
                shr     eax, 18h
                shr     ecx, 8
                shl     edx, 8
                and     ecx, 0FF00h
                add     edx, ecx
                mov     rcx, rbx
                add     eax, edx
                cdqe
                mov     cs:qword_142FBE330, rax
                mov     rax, [rbx]
                call    qword ptr [rax+280h]
                movzx   ecx, ax
                shl     ax, 8
                movzx   eax, ax
                shr     rcx, 8
                xor     rcx, rax
                mov     rax, [rbx+2000h]
                mov     cs:qword_142FBE328, rcx
                test    rax, rax
                jz      short loc_141288285
                cmp     dword ptr [rax+50h], 6
                jnz     short loc_141288285
                mov     byte ptr [rax+78h], 1
 
loc_141288285:                          ; CODE XREF: sub_1412881C0+B9j
                                        ; sub_1412881C0+BFj
                lea     rcx, [rsp+78h]
                call    sub_140B64A60
                cmp     dword ptr [rax+8], 0
                jz      short loc_14128829A
                mov     rcx, [rax]
                jmp     short loc_1412882A1
; ---------------------------------------------------------------------------
 
loc_14128829A:                          ; CODE XREF: sub_1412881C0+D3j
                lea     rcx, unk_142BE3168
 
loc_1412882A1:                          ; CODE XREF: sub_1412881C0+D8j
                xor     edi, edi
                mov     [rsp+30h], rcx
                lea     rax, aBinariesWin64B ; "BE.dl"...
                lea     rdx, [rsp+30h]
                lea     rcx, [rsp+40h]
                lea     r8d, [rdi+2]
                mov     [rsp+38h], rax
                mov     [rsp+40h], rdi
                mov     [rsp+48h], rdi
                call    sub_140B6B0C0
                lea     rdx, [rsp+40h]
                lea     rcx, [rsp+30h]
                call    sub_140B6A330
                mov     rbx, [rsp+40h]
                test    rbx, rbx
                jz      short loc_14128830B
                mov     rcx, cs:qword_142FAE3D8
                test    rcx, rcx
                jnz     short loc_141288302
                call    sub_140AEDD60
                mov     rcx, cs:qword_142FAE3D8
 
loc_141288302:                          ; CODE XREF: sub_1412881C0+134j
                mov     rax, [rcx]
                mov     rdx, rbx
                call    qword ptr [rax+28h]
 
loc_14128830B:                          ; CODE XREF: sub_1412881C0+128j
                mov     rbx, [rsp+78h]
                test    rbx, rbx
                jz      short loc_141288336
                mov     rcx, cs:qword_142FAE3D8
                test    rcx, rcx
                jnz     short loc_14128832D
                call    sub_140AEDD60
                mov     rcx, cs:qword_142FAE3D8
 
loc_14128832D:                          ; CODE XREF: sub_1412881C0+15Fj
                mov     rax, [rcx]
                mov     rdx, rbx
                call    qword ptr [rax+28h]
 
loc_141288336:                          ; CODE XREF: sub_1412881C0+153j
                cmp     [rsp+38h], edi
                lea     rcx, unk_142BE3168
                mov     [rsp+140h], r15
                cmovnz  rcx, [rsp+30h]
                call    cs:LoadLibraryW
                mov     cs:qword_142FBE358, rax
                test    rax, rax
                jz      loc_141288536
                lea     rdx, aGetver    ; "GetVer"
                mov     rcx, rax
                call    cs:GetProcAddress
                test    rax, rax
                jz      loc_141288529
                call    rax
                mov     rcx, cs:qword_142FBE358
                test    rcx, rcx
                jz      loc_141288536
                lea     rdx, aInit_6    ; "Init"
                call    cs:GetProcAddress
                mov     r15, rax
                test    rax, rax
                jz      loc_141288529
                mov     ecx, cs:dword_1430486D0
                mov     [rsp+168h], rsi
                test    cl, 1
                jnz     short loc_141288404
                or      ecx, 1
                lea     rdx, aArkD_D    ; "ARK %d.%d"
                mov     r9d, 3B0h
                mov     cs:dword_1430486D0, ecx
                lea     rcx, qword_1430486D8
                mov     r8d, 0FEh
                mov     cs:dword_142FA22FC, 0FEh
                mov     cs:dword_142FA22F8, 3B0h
                call    sub_140AD5AA0
                lea     rcx, sub_142585950
                call    sub_142556E2C
 
loc_141288404:                          ; CODE XREF: sub_1412881C0+1FAj
                cmp     cs:dword_1430486E0, edi
                lea     rsi, unk_142BE3168
                mov     [rbp+10h], rdi
                cmovnz  rsi, cs:qword_1430486D8
                test    rsi, rsi
                jz      short loc_141288495
                or      rax, 0FFFFFFFFFFFFFFFFh
 
loc_141288426:                          ; CODE XREF: sub_1412881C0+26Dj
                inc     rax
                cmp     [rsi+rax*2], di
                jnz     short loc_141288426
                lea     ebx, [rax+1]
                lea     rcx, [rbp-70h]
                mov     [rbp+20h], eax
                mov     r8d, ebx
                call    sub_1401131C0
                mov     rax, [rbp+10h]
                lea     rdx, [rbp-70h]
                test    rax, rax
                mov     r9d, ebx
                mov     r8, rsi
                setz    dil
                neg     edi
                movsxd  rcx, edi
                and     rcx, rdx
                mov     edx, ebx
                or      rcx, rax
                mov     [rbp+18h], rcx
                call    sub_140113280
                test    rax, rax
                jnz     short loc_14128848F
                lea     r9, unk_142BE3168
                lea     r8d, [rax+18h]
                lea     rdx, aCSvn_arkEng_44 ; "C:\\SVN_Ark\\Engine\\Source\\Runtime\\C"...
                lea     rcx, aResult    ; "Result"
                call    sub_140B5FD50
 
loc_14128848F:                          ; CODE XREF: sub_1412881C0+2AFj
                mov     rdi, [rbp+10h]
                jmp     short loc_14128849C
; ---------------------------------------------------------------------------
 
loc_141288495:                          ; CODE XREF: sub_1412881C0+260j
                mov     [rbp+18h], rdi
                mov     [rbp+20h], edi
 
loc_14128849C:                          ; CODE XREF: sub_1412881C0+2D3j
                mov     rax, [rbp+18h]
                mov     rsi, [rsp+168h]
                mov     [rsp+50h], rax
                test    rdi, rdi
                jz      short loc_1412884D3
                mov     rcx, cs:qword_142FAE3D8
                test    rcx, rcx
                jnz     short loc_1412884CA
                call    sub_140AEDD60
                mov     rcx, cs:qword_142FAE3D8
 
loc_1412884CA:                          ; CODE XREF: sub_1412881C0+2FCj
                mov     rax, [rcx]
                mov     rdx, rdi
                call    qword ptr [rax+28h]
 
loc_1412884D3:                          ; CODE XREF: sub_1412881C0+2F0j
                mov     eax, dword ptr cs:qword_142FBE330
                lea     r8, qword_142FBE338
                lea     rdx, [rsp+50h]
                mov     [rsp+58h], eax
                movzx   eax, word ptr cs:qword_142FBE328
                mov     ecx, 2
                mov     [rsp+5Ch], ax
                lea     rax, nullsub_1
                mov     [rsp+60h], rax
                lea     rax, sub_141287F00
                mov     [rsp+68h], rax
                lea     rax, sub_141287C70
                mov     [rsp+70h], rax
                call    r15
                test    al, al
                jz      short loc_141288529
                mov     bl, 1
                jmp     short loc_141288538
; ---------------------------------------------------------------------------
 
loc_141288529:                          ; CODE XREF: sub_1412881C0+1B8j
                                       ; sub_1412881C0+1E3j ...
                mov     rcx, cs:qword_142FBE358
                call    cs:FreeLibrary
 
loc_141288536:                          ; CODE XREF: sub_1412881C0+19Fj
                                        ; sub_1412881C0+1CAj
                xor     bl, bl
 
loc_141288538:                          ; CODE XREF: sub_1412881C0+367j
                cmp     qword ptr [rsp+30h], 0
                mov     r15, [rsp+140h]
                mov     rdi, [rsp+170h]
                jz      short loc_141288574
                mov     rcx, cs:qword_142FAE3D8
                test    rcx, rcx
                jnz     short loc_141288568
                call    sub_140AEDD60
                mov     rcx, cs:qword_142FAE3D8
 
loc_141288568:                          ; CODE XREF: sub_1412881C0+39Aj
                mov     r8, [rcx]
                mov     rdx, [rsp+30h]
                call    qword ptr [r8+28h]
 
loc_141288574:                          ; CODE XREF: sub_1412881C0+38Ej
                movzx   eax, bl
                jmp     short loc_14128857B
; ---------------------------------------------------------------------------
 
loc_141288579:                          ; CODE XREF: sub_1412881C0+23j
                                        ; sub_1412881C0+30j
                xor     al, al
 
loc_14128857B:                          ; CODE XREF: sub_1412881C0+3B7j
                mov     rcx, [rbp+30h]
                xor     rcx, rsp
                call    sub_142556D00
                add     rsp, 148h
                pop     rbx
                pop     rbp
                retn
sub_1412881C0   endp
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
25.02.2017, 01:58 4
Цитата Сообщение от Ruslan228 Посмотреть сообщение
Функция GetVer и Init не должны возвращать никаких данных они их импортируют
Цитата Сообщение от Ruslan228 Посмотреть сообщение
lea rdx, aGetver ; "GetVer"
mov rcx, rax ; hModule
call cs:GetProcAddress
test rax, rax
jz loc_141286089
call rax
Вот это вот call rax что вызывает ?
Кстати результат этого вызова или не возвращается или игнорируется.

Добавлено через 11 минут
Функция Init вызывается в 227 строчке. Эта функция возвращает результат в виде байта. Запишем это так :
unsigned char result ;
...
result = Init() ; if (result == 0) { ФриЛайбрари для какой-то DLL-ки ; }
а функция sub_1412881C0, которую ты дизассемблировал именно этот результат и возвращает. Вот в таком виде :
return (result != 0) ;

Добавлено через 4 минуты
Цитата Сообщение от Ruslan228 Посмотреть сообщение
Как я понял они сравниваются и происходит вердикт
Не сравниваются. GetVer просто должна быть, а Init должна вернуть код успешного завершения. Иначе вердикт.
0
25.02.2017, 01:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2017, 01:58
Помогаю со студенческими работами здесь

Как изменить версию CSS
Хотел сделать анимированый задний фон на сайте, узнал что добавление несколько фонов возможно в CSS...

Как изменить версию .NET
У меня стоит .Net 4,5. Как скомпилировать программу на с#, чтобы моя программа запускалась на .Net...

Как изменить версию Android
1)Не могу найти как мне изменить версию андроида для которого я разрабатываю приложение ? 2) не...

Как изменить версию Framework
У меня есть готовое по. В момент создания, я поставил значение Framework в 4.5. Сейчас возникла...


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

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