На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Как найти базовый адрес User32.dll? , и других как Kernel32,advapi.dll,SetupApi.dll
    Желательно универсальную :)
      Arazel, исходник на FASM.
      Прикреплённый файлПрикреплённый файлApiSearch.rar (2.93 Кбайт, скачиваний: 202)
        ProgramMan А на TASM нет нечего? Я синтаксис FASM плохо понимаю :huh:
          Arazel во всех версия MS Windows база у них одинаковая ;)
            Имелось ввиду физический адрес?
              Arazel, а эт не факт что они загружены будут. Лучше искать kernel а потом через LoadLibrary.

              Цитата Monty @
              Arazel во всех версия MS Windows база у них одинаковая

              Это с каких пор? :)
                Ct757 Это я знаю :)
                Но разве тебе не интересно найти User32.dll в памяти :)
                  Arazel из PEB (Process Environment Block) можно узнать адреса и имена всех загруженных библиотек ;) Копай PEB_LDR_DATA.
                    Ct757 Я пытаюсь как можно меньше сделать код а ты предлагаешь его повысеть так не пойдет ;) Я даже именна ф-ций в CRC32 формате минимизировал!
                    Зато файл уменьшился в 1kb :D

                    Так что надо как можно меньше сделать...

                    Вообщем наверное я воспользуюсь LoadLibraryA :(
                      Arazel, ну тогда уж можно было что-нибудь менее громоздкое сделать чем crc32 ;) Например какой-нибудь простенький самопальный хэш-алгоритм.

                      Цитата Arazel @
                      Зато файл уменьшился в 1kb

                      И какой в этом смысл? ;)
                        Цитата Ct757 @
                        самопальный хэш-алгоритм

                        Ну прям, сейчас я буду создовать настоящий CRC32 а может ещё MD5
                        или вообще GOST :D


                        Примерно такую... Но естественно мой код в три раза меньше :)

                        ExpandedWrap disabled
                          format PE GUI 4.0
                          include '%fasminc%\win32a.inc'
                           
                          ;;GetKernel procedure
                              ; GetKernel procedure
                              mov eax, [fs:30h]                  ; ptr 2 РЕВ
                              test    eax, eax
                              js  @F                     ; if we R on 9x - jmp @F
                           
                              mov eax, [eax + 12]                ; ptr 2 PEB_LDR_DATA
                              mov esi, [eax + 28]                ; ptr 2 InitializationOrderModuleList
                              lodsd
                              mov eax, [eax + 8]                 ; eax -> VA kernel32.dll
                              jmp @skip
                           
                            @@:   mov eax, [eax + 52]
                              mov eax, [eax + 184]
                           
                                @skip:
                              call    GetFunctions
                          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                              invoke  LoadLibrary, szUser32
                              call    GetFunctions
                              xor ebx, ebx
                              invoke  MessageBox, ebx, szMessage, szCaption, MB_ICONINFORMATION + MB_OK
                              invoke  ExitProcess, ebx
                          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                GetFunctions:
                              xchg    eax, ebx
                              ; Search for API
                              mov edx, [ebx + 3ch]               ; PE
                              mov esi, [ebx + edx + 78h]             ; Export Table RVA
                              lea esi, [ebx + esi + 18h]             ; Export Table VA+18h
                              lodsd
                              xchg    eax, ecx                   ; NumberOfNames
                              lodsd                          ; AddressOfFunctions
                              push    eax
                              lodsd                          ; AddressOfNames
                              add eax, ebx
                              xchg    eax, edx
                              lodsd                          ; AddressOfNameOrdinals
                              add eax, ebx
                              push    eax
                              mov esi, edx
                           
                                search_api_name:
                              lodsd
                              add eax, ebx                   ; eax points to the name of function
                              ; Calc function name hash
                              xor edx, edx                   ; edx == 0, coz it'll contain hash
                           
                                calc_hash:
                              rol edx, 3
                              xor dl, byte [eax]                 ; xor dl with current character
                              inc eax                    ; character shift
                              cmp byte [eax], 0                  ; is we in the end of chain?
                              jnz calc_hash
                              ; Get offset to ordinal
                              mov eax, [esp]                 ; AddressOfNameOrdinals
                              add dword [esp], 2                 ; Move to next ordinal word
                              mov edi, HashTable
                          ok_hash:
                              cmp [edi], edx
                              jnz @F
                                  ; Needed function found
                                  movzx   eax, word [eax]         ; Name ordinal
                                  shl eax, 2              ; Multiply by 4
                                  add eax, [esp + 4]
                                  add eax, ebx
                                  mov eax, [eax]
                                  add eax, ebx
                                  stosd
                                  jmp @endif
                              @@: scasd                          ; Skip function hash
                                @endif:
                              cmp dword [edi], 0
                              jnz ok_hash
                              dec ecx
                              jnz search_api_name
                              add esp, 8
                              ret
                           
                            szUser32   db 'user32', 0
                            szMessage  db 'Message!!!', 0
                            szCaption  db 'Caption', 0
                           
                          HashTable:             ; Functions' hashes may be in non-alphabetical order
                              ReadFile           dd 00BE25545h
                              IsDebuggerPresent      dd 09279E814h
                              GetModuleFileName      dd 060F43F1Bh
                              MessageBox         dd 014D14C51h
                              GetFileSize        dd 09554EFE7h
                              GetProcAddress         dd 0F2509B84h
                              CloseHandle        dd 0C0D6D616h
                              GlobalFree         dd 0585ED3CFh
                              LoadLibrary        dd 0A412FD89h
                              GetModuleHandle        dd 0C9BFFA7Dh
                              VirtualProtect         dd 0C5FF2F46h
                              GlobalAlloc        dd 0C2F6D009h
                              CreateFile         dd 038C62A7Ah
                              ExitProcess        dd 0E6FF2CB9h
                              Zero               db 0
                                             ; Terminating NULL is necessary. DON'T DELETE





                        Цитата Ct757 @
                        И какой в этом смысл?

                        Смысл не в 1kb а в самой задаче!

                        Моя задача:
                        Создать программу которая будет брать на себя очень многое...
                        но при этом получить маленькую размером программу
                        учитывая оптимальность.

                        Использовав как можно больше логического вычисление
                        и как можно меньше переменных.

                        Вот так ;)
                        Сообщение отредактировано: Arazel -
                          Цитата Ct757 @
                          Это с каких пор?

                          И правда ..., с чем я мог перепутать? :huh:
                          Я помню что что-то переходит от версии к версии и не меняется.
                            Цитата Arazel @
                            Создать программу которая будет брать на себя очень многое...
                            но при этом получить маленькую размером программу
                            учитывая оптимальность.

                            Использовав как можно больше логического вычисление
                            и как можно меньше переменных.

                            Вирусы писать - нехорошо ;)
                              Ct757

                              Есть одни маленькие детали…
                              1) Я не занимаюсь созданием вирусов
                              a) Если я знаю Ассемблер и тонкость самого ядра
                              это не значит, что я собираюсь создавать
                              мощные вредоносные программы!

                              b) Если у меня есть право модифицировать чужое
                              приложение! это не значит, что собираюсь с помощью
                              этого приложение уничтожить другие,
                              в том числе информацию…

                              2) Действительно я могу создать вирус размером 2.0kb (Max)не зависимо, на каком языке (Хоть сам DELPHI) и которая
                              будет выполнять очень многое действий.
                              Но! Во первых таких подобных программ очень много!
                              и я от этого не чего не получаю!
                              Во вторых я не хочу просидеть со стенкой.
                              И в третьих это грех! (Тоже самое про Хакеров)

                              3) Я создаю очень не обычную программу!
                                Цитата Arazel @
                                Действительно я могу создать вирус размером 2.0kb


                                Можно привести алгоритм написания такого вируса на FoxPro2.6 хотя бы весьма приблизительно?
                                Сообщение отредактировано: Демо -
                                  Демо Технический можно.
                                    Цитата Arazel @
                                    Демо Технический можно.


                                    Да? И как?

                                    Добавлено
                                    Спустись на землю и выпусти воздух.
                                      M

                                      Демо,Arazel, вы отдалились от темы.

                                        ProgramMan Согласись если захотеть можно все!
                                        а со своими вопросами я разобрался ;)
                                          находим адрес кернела
                                          ExpandedWrap disabled
                                            .486p
                                            .model flat
                                             
                                            extrn ExitProcess:proc
                                             
                                            .data
                                             
                                            vrs:
                                              mov ebx,[esp]    ;возьмем из стека адрес Kernel`а
                                              xor bx,bx        ;и найдем его начало
                                             
                                            next_block:
                                              cmp word ptr [ebx],'ZM'  ;начало?
                                              je  found_MZ             ; угу!
                                              sub ebx,1000h            ; ищем дальше
                                              jmp next_block
                                             
                                            found_MZ:
                                              mov  edx,ebx                ;сохраним указатель
                                              mov edi,dword ptr [ebx+3Ch] ;адрес РЕ заголовка
                                              add edi,edx                 ;+ адрес Kernel`а
                                              cmp word ptr [edi],'EP'     ;проверка на РЕ
                                              jmp Exit                    ;не равно-выходим
                                              mov 4 ptr [KrnAddr],edx     ;сохраним базовый адрес Kernel`а
                                             
                                            Exit:
                                              jmp fin
                                              KrnAddr dd 0
                                             
                                            .code
                                            start:
                                              jmp vrs
                                             
                                            fin:
                                              push 0
                                             
                                              call ExitProcess
                                            end start
                                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                          0 пользователей:


                                          Рейтинг@Mail.ru
                                          [ Script execution time: 0.1194 ]   [ 15 queries used ]   [ Generated: 20.09.26, 15:52 GMT ]