Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/22: Рейтинг темы: голосов - 22, средняя оценка - 5.00
 Аватар для Dimarik__
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444

Таблица импорта: исправить ошибки в коде

06.01.2012, 19:50. Показов 4287. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Эту же мануалку читаю (туториалы с WASM-a), написал всё как говорил автор, в итоге, в этих местах ошибки:
Assembler
1
2
3
4
5
6
7
8
9
10
11
.while !(([EDI].OriginalFirstThink == 0) && ([EDI].TimeDateStamp == 0) && 
                ([EDI].ForwarderChain == 0) && ([EDI].Name1 == 0) && ([EDI].FirstThunk == 0))
            invoke RVAToOffset, DD_adressOfMappingFile, EDI
            ;добавляем файловое смещение к указателю на мэппированный файл и получаем искомый RVA,
            ;который будет при загрузке файла PE-загрузчиком
            mov EDX, EAX
            add EDX, DD_adressOfMappingFile
            invoke wsprintf, offset strTemp_1, offset strIDTemplate,
                            [EDI].OriginalFirstThunk, [EDI].TimeDateStamp, [EDI].ForwarderChain, EDX, [EDI].FirstThunk
            
        .endw
вот такие вот ошибочки выдал MASM32:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Microsoft Windows [Version 6.1.7600]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
 
C:\Users\Dimarik>cd c:/masm32/bin
 
c:\masm32\bin>ml /c /coff PE_1.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.
 
 Assembling: PE_1.asm
PE_1.asm(394) : error A2154: syntax error in control-flow directive
PE_1.asm(395) : error A2008: syntax error : (
PE_1.asm(401) : error A2006: undefined symbol : FirstThunk
PE_1.asm(401) : error A2114: INVOKE argument type mismatch : argument : 0
PE_1.asm(401) : error A2006: undefined symbol : ForwarderChain
PE_1.asm(401) : error A2006: undefined symbol : TimeDateStamp
PE_1.asm(401) : error A2006: undefined symbol : OriginalFirstThunk
PE_1.asm(191) : error A2006: undefined symbol : PointertoRawData
PE_1.asm(57) : error A2009: syntax error in expression
 
c:\masm32\bin>
строка 395 - это начало цикла
как только я с этим .while не работал
и так
Code
1
2
    .while !([edi].OriginalFirstThunk==0 && [edi].TimeDateStamp==0 &&
        [edi].ForwarderChain==0 && [edi].Name1==0 && [edi].FirstThunk==0)
(как собственно, изначально предлагал автор)
и даже так:
Code
1
2
        .while ([EDI].OriginalFirstThink != 0) && ([EDI].TimeDateStamp != 0) && 
                ([EDI].ForwarderChain != 0) && ([EDI].Name1 != 0) && ([EDI].FirstThunk != 0))
Результата никакого.
Ещё непонятно, почему это в функции wsprintf ругается на [EDI].OriginalFirstThunk и т.п.
Самое главное, в самом условии цикла - компилятор на эти переменные не ругался, а через несколько строк ошибку выдал.
P.S. Хотелось бы эту проблему решить через .while без использования всяких там cmp, jnz и т.п.
Вот полностью код http://zalil.ru/32439206
Заранее спасибо за советы.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.01.2012, 19:50
Ответы с готовыми решениями:

Найти ошибки в коде и исправить эти ошибки (Наследование)
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h (inline) #pragma once class list...

Найти ошибки в коде и исправить эти ошибки - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить откуда. A.h #pragma once ...

Найти ошибки в коде и исправить эти ошибки
Есть у меня вот такой код: #include <iostream> using namespace std; class A{ private: int* a; size_t size_; ...

29
4187 / 1835 / 220
Регистрация: 06.10.2010
Сообщений: 4,123
07.01.2012, 08:40
Подправил.
Вложения
Тип файла: rar 1.rar (5.3 Кб, 29 просмотров)
1
 Аватар для Dimarik__
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
07.01.2012, 10:58  [ТС]
Цитата Сообщение от murderer Посмотреть сообщение
Подправил.
Спасибо большое за помощь! Все ошибки понятны, кроме условия цикла. Что там не так было? Неужели из-за того что я ENTER-ом перенёс на 2 строки?О_о
0
4187 / 1835 / 220
Регистрация: 06.10.2010
Сообщений: 4,123
07.01.2012, 11:00
Там открывающая скобка была пропущена.

Добавлено через 1 минуту
Ну и перенос наверное тоже.
1
 Аватар для Dimarik__
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
07.01.2012, 20:42  [ТС]
Хочу вытянуть значение Name1 из структуры IMAGE_IMPORT_DESCRIPTOR.
Я попытался это сделать с помощью конкатенации основной строки для вывода и addr [EDI].Name1 с помощью функции lstrcat.
Однако, выдало какую-то бредятину. Причём, похоже, рандомную.
Автор туториалов по ассемблеру предложил так сделать:
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
    assume edi:ptr IMAGE_NT_HEADERS
    mov edi, [edi].OptionalHeader.DataDirectory[sizeof
        IMAGE_DATA_DIRECTORY].VirtualAddress
    invoke RVAToOffset,pMapping,edi
    mov edi,eax
    add edi,pMapping
    assume edi:ptr IMAGE_IMPORT_DESCRIPTOR
    .while !([edi].OriginalFirstThunk==0 && [edi].TimeDateStamp==0 &&
        [edi].ForwarderChain==0 && [edi].Name1==0 && [edi].FirstThunk==0)
        invoke AppendText,hDlg,addr ImportDescriptor
        invoke RVAToOffset,pMapping, [edi].Name1
        mov edx,eax
        add edx,pMapping
        invoke wsprintf, addr temp, addr IDTemplate,[edi].OriginalFirstThunk,\
            [edi].TimeDateStamp,[edi].ForwarderChain,edx,[edi].F
        invoke AppendText,hDlg,addr temp
        .if [edi].OriginalFirstThunk==0
            mov esi,[edi].FirstThunk
        .else
            mov esi,[edi].OriginalFirstThunk
        .endif
        invoke RVAToOffset,pMapping,esi
        add eax,pMapping
        mov esi,eax
        invoke AppendText,hDlg,addr NameHeader
        .while dword ptr [esi]!=0
            test dword ptr [esi],IMAGE_ORDINAL_FLAG32
            jnz ImportByOrdinal
            invoke RVAToOffset,pMapping,dword ptr [esi]
            mov edx,eax
            add edx,pMapping
            assume edx:ptr IMAGE_IMPORT_BY_NAME
            mov cx, [edx].Hint
            movzx ecx,cx
            invoke wsprintf,addr temp,addr NameTemplate,ecx,addr [edx].Name1
            jmp ShowTheText
ImportByOrdinal:
            mov edx,dword ptr [esi]
            and edx,0FFFFh
            invoke wsprintf,addr temp,addr OrdinalTemplate,edx
ShowTheText:
            invoke AppendText,hDlg,addr temp
            add esi,4
        .endw
        add edi,sizeof IMAGE_IMPORT_DESCRIPTOR
    .endw
Но при таком способе, у меня вообще ничего не вывелось. Вообще непонятно, почему ко всем полям структуры автор предлагает обращаться через [EDI].FirstThunk ну и т.п., а к Name через
Assembler
1
2
3
    invoke RVAToOffset,pMapping, [edi].Name1
        mov edx,eax
        add edx,pMapping
И ещё. Зачем нужно преобразовывать эти адреса? Я, честно говоря, так до конца и не понял. Эта непонятка с RVAToOffset только при работе с таблицей импорта что ли?
Автор так написал:
Получаем RVA символов импоpта. Сначала edi указывает на PE-заголовок. Мы используем его, чтобы пеpейти ко 2nd члену диpектоpии данных и получить значение паpаметpа VirtualAddress.

invoke RVAToOffset,pMapping,edi
mov edi,eax
add edi,pMapping

Здесь скpывается одна из ловушек для новичков PE-пpогpаммиpования. Большинство из адpесов в PE-файле - это RVA и RVA имеют значение только, когда загpужены в память PE-загpузчиком. В нашем случае мы мэппиpуем файл в память, но не так, как это делает PE-загpузчик. Поэтому мы не можем напpямую использовать эти RVA. Каким-то обpазом мы должны конвеpтиpовать эти RVA в файловые смещения. Специально для этого я написал функцию RVAToOffset. Я не буду детально детально анализиpовать ее здесь. Достаточно сказать, что она пpовеpяет свеpяет данный RVA с RVA'ми началами и концами всех секций в PE-файле и использует значение в поле PointerToRawData из стpуктуpы IMAGE_SECTION_HEADER, чтобы сконвеpтиpовать RVA в файловое смещение.
Чтобы использовать эту функцию, вы пеpедаете ей два паpаметpа: указатель на мэппиpованный файл и RVA, котоpое вы хотите сконвеpтиpовать. Она возвpащает в eax файловое смещение. В вышепpиведенном отpывке кода мы должны добавить указатель на пpомэппиpованный файл к файловому оффсету, чтобы сконвеpтиpовать его в виpтуальный адpес. Кажется сложным, не пpавда ли?
P.S. Вот сам файл с кодом и эта статья про таблицу импорта (стр 286).
Iczelions_Tutorials_(for_print).zip
Программа вызывается из контекстного меню при щелчке правой кнопкой мыши на файле. Подразумевается что исходник проги лежит на диске C:
Вложения
Тип файла: rar исходник.rar (6.4 Кб, 17 просмотров)
0
4187 / 1835 / 220
Регистрация: 06.10.2010
Сообщений: 4,123
08.01.2012, 14:02
Вот примерчик на FASM. Выводит в MessageBox таблицу импорта exe-файла.
Код
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
format PE GUI 4.0
include 'include\win32ax.inc'
include 'include\macro\MASM.inc'
 
struct TObjectTable
  ObjectName      rb 8
  VirtualSize     rd 1
  SectionRVA      rd 1
  PhysicalSize    rd 1
  PhysicalOffset  rd 1
  Reserved        rb 12
  ObjectFlags     rd 1
ends
 
struct TImportDirectory
  ImportLookUp   rd 1
  TimeDateStamp  rd 1
  ForwardChain   rd 1
  NameRVA        rd 1
  AddresTableRVA rd 1
ends
 
struct THintName
  Hint         rw 1
  ServiceName  rb 1
ends
 
entry $
  invoke GetModuleFileNameW,0,filename,2048
  invoke CreateFileW,filename,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,0,0
  mov    ebx,eax
  invoke ReadFile,ebx,MZHeader,sizeof.MZHeader,i,0
  invoke SetFilePointer,ebx,[MZHeader.OffsetToPEHeader],0,FILE_BEGIN
  invoke ReadFile,ebx,PEHeader,sizeof.PEHeader,i,0
  mov    eax,[PEHeader.NumOfRVAandSizes]
  shl    eax,3
  invoke ReadFile,ebx,DirectoryTable,eax,i,0
 
  invoke VirtualAlloc,0,[PEHeader.ImageSize],MEM_COMMIT,PAGE_READWRITE
  mov    [ObjectTable],eax
  mov    edi,eax
  movzx  esi,[PEHeader.Count_of_section]
  imul   edx,esi,sizeof.TObjectTable
  invoke ReadFile,ebx,eax,edx,i,0
 
  assume edi:TObjectTable
  @@:invoke SetFilePointer,ebx,[edi.PhysicalOffset],0,FILE_BEGIN
     mov    eax,[ObjectTable]
     add    eax,[edi.SectionRVA]
     invoke ReadFile,ebx,eax,[edi.PhysicalSize],i,0
     add    edi,sizeof.TObjectTable
     dec    esi
  jnz @b
 
  mov  ebx,filename
  mov  ebp,[ObjectTable]
  mov  edi,ebp
  add  edi,[DirectoryTable.ImportTableRVA]
  assume edi:TImportDirectory
  @@:add    [edi.NameRVA],ebp
     add    [edi.AddresTableRVA],ebp
     mov    esi,[edi.AddresTableRVA]
     invoke wsprintfA,ebx,libraryfmt,[edi.NameRVA]
     add    ebx,eax
     a:add    [esi],ebp
       mov    eax,[esi]
       add    eax,THintName.ServiceName
       invoke wsprintfA,ebx,functionfmt,eax
       add    ebx,eax
       add    esi,4
       cmp    dword[esi],0
     jnz a
     add edi,sizeof.TImportDirectory
     cmp [edi.AddresTableRVA],0
  jnz @b
 
  invoke MessageBoxA,0,filename,0,0
  invoke ExitProcess,0
 
align 8
data import
  library kernel32,'kernel32.dll',\
          user32,'user32.dll'
 
   import kernel32,\
          VirtualAlloc,'VirtualAlloc',\
          CreateFileW,'CreateFileW',\
          ReadFile,'ReadFile',\
          SetFilePointer,'SetFilePointer',\
          GetModuleFileNameW,'GetModuleFileNameW',\
          ExitProcess,'ExitProcess'
 
   import user32,\
          wsprintfA,'wsprintfA',\
          MessageBoxA,'MessageBoxA'
end data
 
libraryfmt  db '%s',13,10,0
functionfmt db '    %s',13,10,0
 
filename    rw 16384
ObjectTable rd 1
i           rd 1
 
MZHeader:
  .MZSignature               rw 1
  .BytesOnLastPage           rw 1
  .PagesInFile               rw 1
  .NumberOfRelocationEntries rw 1
  .ParagraphsInHeader        rw 1
  .MinimumMemory             rw 1
  .MaximumMemory             rw 1
  .Initial_SS                rw 1
  .Initial_SP                rw 1
  .CheckSum                  rw 1
  .Initial_IP                rw 1
  .Initial_CS                rw 1
  .RelocationTableOffset     rw 1
  .OverlayNumber             rw 1
  .FirstRelocOffset          rw 1
  .OverlayNum                rw 1
  .Reserved                  rd 1
  .OEMInfo                   rb 24
  .OffsetToPEHeader          rd 1
sizeof.MZHeader=$-MZHeader
 
PEHeader:
  .PESignature               rd 1
  .CPU_Type                  rw 1
  .Count_of_section          rw 1
  .TimeStamp                 rd 1
  .COFFTablePointer          rd 1
  .COFFTableSize             rd 1
  .NTHeaderSize              rw 1
  .Flags                     rw 1
  .Magic                     rw 1
  .LinkMajor                 rb 1
  .LinkMinor                 rb 1
  .SizeOfCode                rd 1
  .SizeOfInitData            rd 1
  .SizeOfUnInitData          rd 1
  .EntryPointRVA             rd 1
  .BaseOfCode                rd 1
  .BaseOfData                rd 1
  .ImageBase                 rd 1
  .ObjectAlign               rd 1
  .FileAlign                 rd 1
  .OSMajor                   rw 1
  .OSMinor                   rw 1
  .USERMajor                 rw 1
  .USERMinor                 rw 1
  .SubSysMajor               rw 1
  .SubSysMinor               rw 1
  .Reserved                  rd 1
  .ImageSize                 rd 1
  .HeaderSize                rd 1
  .FileCheckSum              rd 1
  .SubSystem                 rw 1
  .DLLFlags                  rw 1
  .StackReserveSize          rd 1
  .StackCommitSize           rd 1
  .HeapReserveSize           rd 1
  .HeapComitSize             rd 1
  .LoaderFlags               rd 1
  .NumOfRVAandSizes          rd 1
sizeof.PEHeader=$-PEHeader
 
DirectoryTable:
  .ExportTableRVA            rd 1
  .ExportDataSize            rd 1
  .ImportTableRVA            rd 1
  .ImportDataSize            rd 1
  .ResourceTableRVA          rd 1
  .ResourceDataSize          rd 1
  .ExceptionTableRVA         rd 1
  .ExceptionDataSize         rd 1
  .SecurityTableRVA          rd 1
  .SecurityDataSize          rd 1
  .FixUpTableRVA             rd 1
  .FixUpDataSize             rd 1
  .DebugTableRVA             rd 1
  .DebugDataSize             rd 1
  .DescriptionRVA            rd 1
  .DescriptionDataSize       rd 1
  .MachineSpecificRVA        rd 1
  .MachnineDataSize          rd 1
  .TLSRVA                    rd 1
  .TLSDataSize               rd 1
  .LoadConfigRVA             rd 1
  .LoadConfigDataSize        rd 1
  .Reserved2                 rq 1
  .IATRVA                    rd 1
  .IATDataSize               rd 1
  .Reserved3                 rq 3
sizeof.DirectoryTable=$-DirectoryTable


Добавлено через 9 минут
И ещё. Зачем нужно преобразовывать эти адреса? Я, честно говоря, так до конца и не понял. Эта непонятка с RVAToOffset только при работе с таблицей импорта что ли?
В формате PE существуют такие понятия как неинициализированные данные и выравнивание секций. В файле секции расположены без выравнивания, а неинициализированных данных вобще нет. Однако RVA указаны с учётом выравнивания. То есть файл нужно предварительно загрузить в память как это делает загрузчик PE, что я и делаю в приведённом выше примере. Видимо автор статьи пошёл другим путём и расчитывает реальные RVA через функцию RVAToOffset.
1
 Аватар для Dimarik__
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
10.01.2012, 13:38  [ТС]
Ну вот, я переделал. Теперь сначала идёт работа с адресом NAme, а потом уже этот "обработанный" адрес посылается в функцию lstrcat, правда фигню какую-то выдаёт:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
Таблица импорта
 
OriginalFirstThunk = 2064
TimeDateStamp = 0
ForwarderChain = 0
Name = 
FirstThunk = 2010
 
OriginalFirstThunk = 2054
TimeDateStamp = 0
ForwarderChain = 0
Name = 
FirstThunk = 2000
Всё самое интересное с Name происходит здесь:
Code
1
2
3
4
;строки 396-398
invoke RVAToOffset, DD_adressOfMappingFile, EDI
            mov EDX, EAX
            add EDX, DD_adressOfMappingFile
и здесь
Code
1
2
;строки 413,414
            invoke lstrcat, offset strIDTemplate_Name, EDX
И ещё. Это нормально что у меня выводит:
TimeDateStamp = 0
ForwarderChain = 0
???
Я разные PE-файлы тестировал, у меня во всех нули выдаёт.
Вот сам код ПОЛНОСТЬЮ:
http://zalil.ru/32462409
0
Заблокирован
30.08.2012, 18:48
Выдается аналогичня ошибка,вот скрин -
адреса функций определены:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CloseHandle         equ dword ptr [ebp-4*1]
FindFirstFileA      equ dword ptr [ebp-4*2]
FindNextFileA       equ dword ptr [ebp-4*3]
CreateFileA         equ dword ptr [ebp-4*4]
ReadFile            equ dword ptr [ebp-4*5]
GlobalAlloc         equ dword ptr [ebp-4*6]
GetFileSize         equ dword ptr [ebp-4*7]
SetFilePointer      equ dword ptr [ebp-4*8]
WriteFile           equ dword ptr [ebp-4*9]
GlobalFree          equ dword ptr [ebp-4*10]
VirtualProtect      equ dword ptr [ebp-4*11]
_ExitProcess        equ dword ptr [ebp-4*12]
GetProcAddress      equ dword ptr [ebp-4*13]
LoadLibrary         equ dword ptr [ebp-4*14]
FindClose           equ dword ptr [ebp-4*15]
GetModuleFileNameA  equ dword ptr [ebp-4*16]
SetCurrentDirectoryA equ dword ptr [ebp-4*17]
FreeLibrary         equ dword ptr [ebp-4*18]
в этом цикле -
Code
1
 .IF  !(eax & FILE_ATTRIBUTE_HIDDEN || eax & FILE_ATTRIBUTE_SYSTEM ||)
где тут ошибка, я смотрел на оф сайте майкрософт,но там она детально не изложена
0
 Аватар для _lucius_
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
03.09.2012, 18:44
Цитата Сообщение от djonatan98 Посмотреть сообщение
.IF !(eax & FILE_ATTRIBUTE_HIDDEN || eax & FILE_ATTRIBUTE_SYSTEM ||)
"Или" в конце уберите.
Assembler
1
.IF  !(eax & FILE_ATTRIBUTE_HIDDEN || eax & FILE_ATTRIBUTE_SYSTEM)
Добавлено через 17 минут
Цитата Сообщение от Dimarik__ Посмотреть сообщение
И ещё. Это нормально что у меня выводит:
TimeDateStamp = 0
ForwarderChain = 0
???
Я разные PE-файлы тестировал, у меня во всех нули выдаёт.
Возьмите допустим hiew или CFF Explorer, и сами посмотрите нормально или нет. )
Вообще эти поля обычно равны нулю. На ForwarderChain загрузчику фиолетово. TimeDateStamp может повлиять на последовательность обработки механизмов импорта.
0
Заблокирован
12.09.2012, 20:29
Выдает следующие ошибки - error A2154 : synatax error in control - flow directive
error А2006 : undefined symbol : _Call_API

первая ошибка ссылется на: .IF ! (byte ptr [esi] || < MaxVictimNumber)
вторая ошибка на: je _Call_API

здесь нужно другое решение


Код:
1).IF ! (byte ptr [esi] || < MaxVictimNumber)
2)je _Call_API должна быть объявлена отдельно, но как-?
В коде встречается 1 раз, возможно не стндартная команда или нужна дополнительная библиотека.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
13.09.2012, 04:36
djonatan98, купи учебник и разберись самостоятельно, а не забивай своими вопросами все ассемблерные форумы подряд, те более тебе на эти вопросы уже ответили
1).IF ! (byte ptr [esi] || < MaxVictimNumber)
наверное должно быть .IF ! (byte ptr [esi] < MaxVictimNumber)
2) je _Call_API в тексте программы должна быть метка с именем _Call_API
3) прежде чем начинать писать вирусы или разбираться с тем как они написаны нужно написать и отладить сотню нормальных программ
1
Заблокирован
13.09.2012, 11:39
Я разобрался уже и там были не только ошибки в циклах, но и в самой программе, при вычислении смещений реального и виртуального размераи секций, при определении их VRA, секции экспорта относительно image base, для вычисления рельного размера последней секции и ошибок была куча а прочитал я много литературы и был на 10-ов сайтов,проассемблировал ни одну программу,изучал механизмы работы стека,функции,программ и посетил сайты разработки проесионального програмного обеспечения, но метка _Call_API - не встречал
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
13.09.2012, 11:42
Цитата Сообщение от djonatan98 Посмотреть сообщение
но метка _Call_API - не встречал
так куда же будет переход
je _Call_API?
0
Заблокирован
13.09.2012, 12:12
То есть je _Call_API? dd - в секции данных-?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
13.09.2012, 12:17
djonatan98, элементарного не понимаешь. Ответь мне, что такое "метка"?
0
Заблокирован
13.09.2012, 12:42
Она у меня объявлена, но не совсем правильно Call_API dd исправил
объявил _Сall_API dd

Code
1
Теперь ссылается на ошибку в 137 строке кода: je   _Call_API
у нее видимо должен быть прототип

Добавлено через 4 минуты
Это спец символ например $

можно объявить так $ _Call_API

Добавлено через 13 минут
Хорошо как ее объявить-?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
13.09.2012, 12:44
djonatan98, у метки прототип? И причем здесь $? Ты не ответил, что такое "метка"?
0
Заблокирован
13.09.2012, 13:20
Я понял что ты имл в виду

_Call_API:
cmp word ptr [edi+4], 0FFFFh
je _Call_API
add edi, 4

Выдает две ошибки

Добавлено через 5 минут
Если метка используется непосредственно перед выполнением команды процессора то ставится (

В качестве мекти можно использовать call удаленный вызов подпрограммы или label - DDWORD

Добавлено через 6 минут
Правильно-?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
13.09.2012, 13:30
Цитата Сообщение от djonatan98 Посмотреть сообщение
Если метка используется непосредственно перед выполнением команды процессора то ставится (
В качестве мекти можно использовать call удаленный вызов подпрограммы или label - DDWORD
Правильно-?
djonatan98 ты девушка блондинка? Если да, то ставится (
Если нет, то это не определение метки, рано, ты за изучение вирусов взялся, начинай с простейших программ
0
Заблокирован
13.09.2012, 16:00
А ты себя таким умным считаешь, поумнее тебя видал, попробуй разберись в моем коде "гений" - блондинка это ты у нас. которая и знает одну метку!Я читал ты шаришь только в элментарных программах типы вывода Hello World и любишь заваливать новичков

Добавлено через 2 часа 16 минут
Я пробовал так и невыходит

Code
1
2
 .data 
metka: equ [ сall_API]
Code
1
2
3
cmp  word ptr [edi+4], 0FFFFh   ; Конец списка?
  je   сall [metka]  
  add  edi, 4
Нашел гдето в интернете
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.09.2012, 16:00
Помогаю со студенческими работами здесь

Ошибки при компиляции - исправить ошибки в коде
Помогите исправить ошибки , не понимаю в чем может быть причина ... #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include...

Исправить ошибки в коде
Дан массив A Размера N. Сформировать массив B такого же размера по следующему правилу : элемент B равен среднему арифметическому элементов...

Исправить ошибки в коде
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; // ------------ -------------------------------- class TStudent { ...

Исправить ошибки в коде
Здрасьте! import java.io.IOException; import java.util.Scanner; //CalcSinCos.java public class LR1qwerty { private String...

Исправить ошибки в коде С++
#include &lt;iostream&gt; #include &lt;cstdio&gt; #include&lt;cstdlib&gt; using namespace std; int main() { const int n=3; struct eom { ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru