Сейчас на форуме: Magister Yoda, site-pro, Rio (+6 невидимых)

 eXeL@B —› Крэки, обсуждения —› Определить функцию из KERNEL32.DLL по ассемблерному коду
Посл.ответ Сообщение

Ранг: 3.7 (гость), 1thx
Активность: 0.030
Статус: Участник

Создано: 15 мая 2012 17:56
· Личное сообщение · #1

Вариант №1
Code:
  1. 017F0B3E   51               PUSH ECX
  2. 017F0B3F   C7C1 A0000000    MOV ECX,0A0
  3. 017F0B45   870C24           XCHG DWORD PTR SS:[ESP],ECX
  4. 017F0B48   68 6000917C      PUSH 7C910060
  5. 017F0B4D   E8 00000000      CALL 017F0B52
  6. 017F0B52   870424           XCHG DWORD PTR SS:[ESP],EAX
  7. 017F0B55   8D40 0F          LEA EAX,DWORD PTR DS:[EAX+F]
  8. 017F0B58   870424           XCHG DWORD PTR SS:[ESP],EAX
  9. 017F0B5B   68 CBE8907C      PUSH 7C90E8CB
  10. 017F0B60   C3               RETN

Вариант №2
Code:
  1. 00E322A5   50               PUSH EAX
  2. 00E322A6   C7C0 A0000000    MOV EAX,0A0
  3. 00E322AC   870424           XCHG DWORD PTR SS:[ESP],EAX
  4. 00E322AF   52               PUSH EDX
  5. 00E322B0   C7C2 6000917C    MOV EDX,7C910060
  6. 00E322B6   871424           XCHG DWORD PTR SS:[ESP],EDX
  7. 00E322B9  ^E9 BFFFFFFF      JMP 00E3227D

Вариант №3
Code:
  1. 02F2081C   68 A0000000      PUSH 0A0
  2. 02F20821   8D6424 FC        LEA ESP,DWORD PTR SS:[ESP-4]
  3. 02F20825   C70424 6000917C  MOV DWORD PTR SS:[ESP],7C910060
  4. 02F2082C   E8 00000000      CALL 02F20831
  5. 02F20831   870424           XCHG DWORD PTR SS:[ESP],EAX
  6. 02F20834   8D40 0F          LEA EAX,DWORD PTR DS:[EAX+F]
  7. 02F20837   870424           XCHG DWORD PTR SS:[ESP],EAX
  8. 02F2083A   68 CBE8907C      PUSH 7C90E8CB
  9. 02F2083F   C3               RETN


По адресу 7C910060 находится значение FFFFFFFF
Добавляем F,получается 0000000E




Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

Создано: 15 мая 2012 17:58
· Личное сообщение · #2

смотри что там за функция по адресу 7C90E8CB
Поищи в kernel32 этот адрес.
Как найдёшь, смотри примерно по коду что там и как.
Как я понимаю разбираешь таблицу импорта у Star Force?

| Сообщение посчитали полезным: Svinovod

Ранг: 3.7 (гость), 1thx
Активность: 0.030
Статус: Участник

Создано: 15 мая 2012 18:22
· Личное сообщение · #3

Dart Sergius пишет:
смотри что там за функция по адресу 7C90E8CB

Это функция из модуля ntdll.dll
Code:
  1. 7C90E8CB   68 20E9907C      PUSH 7C90E920
  2. 7C90E8D0   64:A1 00000000   MOV EAX,DWORD PTR FS:[0]
  3. 7C90E8D6   50               PUSH EAX
  4. 7C90E8D7   8B4424 10        MOV EAX,DWORD PTR SS:[ESP+10]
  5. 7C90E8DB   896C24 10        MOV DWORD PTR SS:[ESP+10],EBP
  6. 7C90E8DF   8D6C24 10        LEA EBP,DWORD PTR SS:[ESP+10]
  7. 7C90E8E3   2BE0             SUB ESP,EAX
  8. 7C90E8E5   53               PUSH EBX
  9. 7C90E8E6   56               PUSH ESI
  10. 7C90E8E7   57               PUSH EDI
  11. 7C90E8E8   8B45 F8          MOV EAX,DWORD PTR SS:[EBP-8]
  12. 7C90E8EB   8965 E8          MOV DWORD PTR SS:[EBP-18],ESP
  13. 7C90E8EE   50               PUSH EAX
  14. 7C90E8EF   8B45 FC          MOV EAX,DWORD PTR SS:[EBP-4]
  15. 7C90E8F2   C745 FC FFFFFFFF MOV DWORD PTR SS:[EBP-4],-1
  16. 7C90E8F9   8945 F8          MOV DWORD PTR SS:[EBP-8],EAX
  17. 7C90E8FC   8D45 F0          LEA EAX,DWORD PTR SS:[EBP-10]
  18. 7C90E8FF   64:A3 00000000   MOV DWORD PTR FS:[0],EAX
  19. 7C90E905   C3               RETN

А по адресу 7C90E920 тоже этот модуль:
Code:
  1. 7C90E920   55               PUSH EBP
  2. 7C90E921   8BEC             MOV EBP,ESP
  3. 7C90E923   83EC 08          SUB ESP,8
  4. 7C90E926   53               PUSH EBX
  5. 7C90E927   56               PUSH ESI
  6. 7C90E928   57               PUSH EDI
  7. 7C90E929   55               PUSH EBP
  8. 7C90E92A   FC               CLD
  9. 7C90E92B   8B5D 0C          MOV EBX,DWORD PTR SS:[EBP+C]
  10. 7C90E92E   8B45 08          MOV EAX,DWORD PTR SS:[EBP+8]
  11. 7C90E931   F740 04 06000000 TEST DWORD PTR DS:[EAX+4],6
  12. 7C90E938   0F85 AB000000    JNZ 7C90E9E9


Может это мусор какой-то,причем тут вообще kernel32.dll?



Ранг: 3.7 (гость), 1thx
Активность: 0.030
Статус: Участник

Создано: 15 мая 2012 18:41
· Личное сообщение · #4

Dart Sergius пишет:
Как я понимаю разбираешь таблицу импорта у Star Force?

Да,здесь 3 разных варианта одной функции для версий 4.70.9.9 Pro , 4.50.6.16 Basic и 4.70.11.0 Pro соответственно. Большую часть импорта можно восстановить по адресу PUSH перед RET ,а тут какая-то фигня. Непонятно зачем он в стек засовывает адрес из другого dll




Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

Создано: 15 мая 2012 19:20 · Поправил: Dart Sergius
· Личное сообщение · #5

хм, ну посмотри по параметрам вызова.
Code:
  1. 017F0B3E   51               PUSH ECX
  2. 017F0B3F   C7C1 A0000000    MOV ECX,0A0
  3. 017F0B45   870C24           XCHG DWORD PTR SS:[ESP],ECX
  4. 017F0B48   68 6000917C      PUSH 7C910060
  5. 017F0B4D   E8 00000000      CALL 017F0B52
  6. 017F0B52   870424           XCHG DWORD PTR SS:[ESP],EAX
  7. 017F0B55   8D40 0F          LEA EAX,DWORD PTR DS:[EAX+F]
  8. 017F0B58   870424           XCHG DWORD PTR SS:[ESP],EAX
  9. 017F0B5B   68 CBE8907C      PUSH 7C90E8CB
  10. 017F0B60   C3               RETN

это примерно тоже самое что
Code:
  1. push 00A0h
  2. call 7C910060

по этой маске ищешь функцию, похожую на кож выше в модуле kermel32.

ps ЕСТЬ КНОПКА ПРАВКА!! не создаём несколько сообщений подряд.



Ранг: 3.7 (гость), 1thx
Активность: 0.030
Статус: Участник

Создано: 15 мая 2012 19:24 · Поправил: Svinovod
· Личное сообщение · #6

В том то и дело,что адрес 7C910060 в модуле kernel32 не упоминается ни разу. Если бы был - я бы давно сам его нашёл. Это адресное пространство ntdll.dll
:7C910060 FFFFFFFF BYTE 4 DUP(0ffh)




Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

Создано: 15 мая 2012 20:31 · Поправил: Dart Sergius
· Личное сообщение · #7

Svinovod, так извиняюсь, я краб...
Code:
  1. push 00A0h
  2. push 7C910060
  3. call 7C90E8CB

что-то типо такого поищите.




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 15 мая 2012 20:55
· Личное сообщение · #8

Svinovod
функи-прямые переходники?..

-----
От многой мудрости много скорби, и умножающий знание умножает печаль




Ранг: 3.7 (гость), 1thx
Активность: 0.030
Статус: Участник

Создано: 15 мая 2012 20:58 · Поправил: Svinovod
· Личное сообщение · #9

Ну как прямые,по rva адресу из ImpRec JMP на начало функции. Может фишка в том,что версия Windows другая? Или на WindowsXP и Vista должны быть одинаковые функции kernel32?
Причем это не глюк,и не ошибка нахождения OEP - именно встречаются нескольких таких функций на разной версии StarForce ,но видно что это одинаковые функции и их невозможно определить по методике,используя поиск в kernel32.dll




Ранг: 164.6 (ветеран), 65thx
Активность: 0.120
Статус: Участник
Волшебник

Создано: 15 мая 2012 21:16
· Личное сообщение · #10

А поставить бряк на одном из таких мест и потрассировать немного не пробовал? Куда попадаешь?

-----
Следуй за белым кроликом




Ранг: 3.7 (гость), 1thx
Активность: 0.030
Статус: Участник

Создано: 15 мая 2012 22:10
· Личное сообщение · #11

Бряк не получится поставить - это динамическая память,адреса генерирует ВМ случайным образом.
Я ставлю бряк на 7C910060 Memory Breakpoint ,происходит останов в модуле protect.dll ,я открыл ImpRec и посмотрел что происходит с функциями: как раз в это время Старфорс делает таблицу импорта (гадит его),и rva этой функции ещё неизвестно (бряк поставить некуда). А когда он сгенерирован,если его поставить то толку ноль - остановки не будет.



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 15 мая 2012 22:17 · Поправил: Veliant
· Личное сообщение · #12

7C90E8CB это скорей всего __SEH_prolog4_GS
Ищите референсы в ntdll с таким же предшествующим кодом
Code:
  1. push 00A0h
  2. push 7C910060

и скорей всего это не начало спертой api
Надо смотреть не куда прыгает, а куда выходит потом, тк спирается только начало, если функция длинная.
Или еще проще - ставите eip в нужное место и трейсите

| Сообщение посчитали полезным: Svinovod

Ранг: 3.7 (гость), 1thx
Активность: 0.030
Статус: Участник

Создано: 15 мая 2012 22:56
· Личное сообщение · #13

Veliant пишет:
7C90E8CB это скорей всего __SEH_prolog4_GS
Ищите референсы в ntdll с таким же предшествующим кодом

Exported fn(): RtlFreeHeap - Ord:0246h
:7C90FF2D 68A0000000 push 000000A0
:7C90FF32 686000917C push 7C910060
:7C90FF37 E88FE9FFFF call 7C90E8CB




Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 15 мая 2012 23:06
· Личное сообщение · #14

ntdll.RtlFreeHeap = kernel32.HeapFree



Ранг: 3.7 (гость), 1thx
Активность: 0.030
Статус: Участник

Создано: 15 мая 2012 23:09
· Личное сообщение · #15

Veliant
Т.е. что происходит, функция из KERNEL32.DLL заменяется на аналог из NTDLL.DLL ?А если я вместо kernel32.HeapFree вставлю в импорт ntdll.RtlFreeHeap , что будет?




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 15 мая 2012 23:13
· Личное сообщение · #16

Svinovod
Происходит --> Forwarding <--

-----
Stuck to the plan, always think that we would stand up, never ran.


| Сообщение посчитали полезным: plutos

Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 15 мая 2012 23:14 · Поправил: Veliant
· Личное сообщение · #17

Некоторые функции дублируются под разными именами в разных dll. И обычно если таковые присутствуют в kernel32, они в IAT заменяются адресами из ntdll.
Заменить то можно, но как правило все api из одной dll идут одним блоком, так что указывать нужно ту, адреса которой расположены в этом же блоке



Ранг: 3.7 (гость), 1thx
Активность: 0.030
Статус: Участник

Создано: 15 мая 2012 23:17
· Личное сообщение · #18

Теперь понятно,значит соответственно:
Exported fn(): RtlSizeHeap - Ord:032Dh это ничто иное как kernel32.HeapSize
Exported fn(): RtlAllocateHeap - Ord:0195h - kernel32.HeapAlloc

Ищем вчерашний день,то чего в кернел32 нет.


 eXeL@B —› Крэки, обсуждения —› Определить функцию из KERNEL32.DLL по ассемблерному коду
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати