Сейчас на форуме: (+7 невидимых)

 eXeL@B —› Вопросы новичков —› forwarding функцй
Посл.ответ Сообщение

Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 09 августа 2014 14:53
· Личное сообщение · #1

В теме Armadillo Vovan666 посоветовал мне заменить функции группы "Rtl..." из ntdll.dll на
соотвтствующие из kernel32.dll. Но для меня это оказалось не таким и простым делом, и чтобы не
засорять тему Armadillo своими вопросами перешел в раздел новичков.
Может кто подскажет как это сделать - устранить т.н. forwarding функций kernel32 ?
Я подготовил адреса загрузки нужных мне функций kernel32 и ntdll, но не знаю нужны ли они вообще?
Из кода вызова функций идет адресация к элементам IAT, сохранять в дампе их бесполезно -
их заполняет загрузчик. Остается, вроде бы, цепочка OriginalFirstThunk -> IMAGE_THUNK_DATA ->
IMAGE_IMPORT_BY_NAME . Изменять в поле Name последней структуры его текстовое значение?!
Заранее благодарю за ответ!



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

Создано: 12 августа 2014 21:58
· Личное сообщение · #2

ntdll.dll!RtlLeaveCriticalSection --> kernel32.dll!LeaveCriticalSection
ntdll.dll!RtlEnterCriticalSection --> kernel32.dll!EnterCriticalSection
ntdll.dll!RtlDeleteCriticalSection --> kernel32.dll!DeleteCriticalSection
ntdll.dll!RtlGetLastWin32Error --> kernel32.dll!GetLastError
ntdll.dll!RtlRestoreLastWin32Error --> kernel32.dll!SetLastError
ntdll.dll!RtlUnwind --> kernel32.dll!RtlUnwind
ntdll.dll!RtlAllocateHeap --> kernel32.dll!HeapAlloc
ntdll.dll!RtlReAllocateHeap --> kernel32.dll!HeapReAlloc
ntdll.dll!RtlSizeHeap --> kernel32.dll!HeapSize
ntdll.dll!RtlFreeHeap --> kernel32.dll!HeapFree



Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

Создано: 12 августа 2014 22:04 · Поправил: unknownproject
· Личное сообщение · #3

Phantom007 пишет:
ntdll.dll!RtlLeaveCriticalSection --> kernel32.dll!LeaveCriticalSection
ntdll.dll!RtlEnterCriticalSection --> kernel32.dll!EnterCriticalSection
ntdll.dll!RtlDeleteCriticalSection --> kernel32.dll!DeleteCriticalSection
ntdll.dll!RtlGetLastWin32Error --> kernel32.dll!GetLastError
ntdll.dll!RtlRestoreLastWin32Error --> kernel32.dll!SetLastError
ntdll.dll!RtlUnwind --> kernel32.dll!RtlUnwind
ntdll.dll!RtlAllocateHeap --> kernel32.dll!HeapAlloc
ntdll.dll!RtlReAllocateHeap --> kernel32.dll!HeapReAlloc
ntdll.dll!RtlSizeHeap --> kernel32.dll!HeapSize
ntdll.dll!RtlFreeHeap --> kernel32.dll!HeapFree

Это не все.
Address - BytePattern - Forwarded function
Code:
  1. 7C809011   .  4E 54 44 4C 4C 2E 52 74 6C 41 64 64 56 65 63 74     ASCII "NTDLL.RtlAddVect"
  2. 7C809021   .  6F 72 65 64 45 78 63 65 70 74 69 6F 6E 48 61 6E     ASCII "oredExceptionHan"
  3. 7C809031   .  64 6C 65 72 00                                      ASCII "dler",0
  4. 7C809036   .  4E 54 44 4C 4C 2E 52 74 6C 44 65 63 6F 64 65 50     ASCII "NTDLL.RtlDecodeP"
  5. 7C809046   .  6F 69 6E 74 65 72 00                                ASCII "ointer",0
  6. 7C80904D   .  4E 54 44 4C 4C 2E 52 74 6C 44 65 63 6F 64 65 53     ASCII "NTDLL.RtlDecodeS"
  7. 7C80905D   .  79 73 74 65 6D 50 6F 69 6E 74 65 72 00              ASCII "ystemPointer",0
  8. 7C80906A   .  4E 54 44 4C 4C 2E 52 74 6C 44 65 6C 65 74 65 43     ASCII "NTDLL.RtlDeleteC"
  9. 7C80907A   .  72 69 74 69 63 61 6C 53 65 63 74 69 6F 6E 00        ASCII "riticalSection",0
  10. 7C809089   .  4E 54 44 4C 4C 2E 52 74 6C 45 6E 63 6F 64 65 50     ASCII "NTDLL.RtlEncodeP"
  11. 7C809099   .  6F 69 6E 74 65 72 00                                ASCII "ointer",0
  12. 7C8090A0   .  4E 54 44 4C 4C 2E 52 74 6C 45 6E 63 6F 64 65 53     ASCII "NTDLL.RtlEncodeS"
  13. 7C8090B0   .  79 73 74 65 6D 50 6F 69 6E 74 65 72 00              ASCII "ystemPointer",0
  14. 7C8090BD   .  4E 54 44 4C 4C 2E 52 74 6C 45 6E 74 65 72 43 72     ASCII "NTDLL.RtlEnterCr"
  15. 7C8090CD   .  69 74 69 63 61 6C 53 65 63 74 69 6F 6E 00           ASCII "iticalSection",0
  16. 7C8090DB   .  4E 54 44 4C 4C 2E 52 74 6C 47 65 74 4C 61 73 74     ASCII "NTDLL.RtlGetLast"
  17. 7C8090EB   .  57 69 6E 33 32 45 72 72 6F 72 00                    ASCII "Win32Error",0
  18. 7C8090F6   .  4E 54 44 4C 4C 2E 52 74 6C 41 6C 6C 6F 63 61 74     ASCII "NTDLL.RtlAllocat"
  19. 7C809106   .  65 48 65 61 70 00                                   ASCII "eHeap",0
  20. 7C80910C   .  4E 54 44 4C 4C 2E 52 74 6C 46 72 65 65 48 65 61     ASCII "NTDLL.RtlFreeHea"
  21. 7C80911C   .  70 00                                               ASCII "p",0
  22. 7C80911E   .  4E 54 44 4C 4C 2E 52 74 6C 52 65 41 6C 6C 6F 63     ASCII "NTDLL.RtlReAlloc"
  23. 7C80912E   .  61 74 65 48 65 61 70 00                             ASCII "ateHeap",0
  24. 7C809136   .  4E 54 44 4C 4C 2E 52 74 6C 53 69 7A 65 48 65 61     ASCII "NTDLL.RtlSizeHea"
  25. 7C809146   .  70 00                                               ASCII "p",0
  26. 7C809148   .  4E 54 44 4C 4C 2E 52 74 6C 49 6E 69 74 69 61 6C     ASCII "NTDLL.RtlInitial"
  27. 7C809158   .  69 7A 65 53 4C 69 73 74 48 65 61 64 00              ASCII "izeSListHead",0
  28. 7C809165   .  4E 54 44 4C 4C 2E 52 74 6C 49 6E 74 65 72 6C 6F     ASCII "NTDLL.RtlInterlo"
  29. 7C809175   .  63 6B 65 64 46 6C 75 73 68 53 4C 69 73 74 00        ASCII "ckedFlushSList",0
  30. 7C809184   .  4E 54 44 4C 4C 2E 52 74 6C 49 6E 74 65 72 6C 6F     ASCII "NTDLL.RtlInterlo"
  31. 7C809194   .  63 6B 65 64 50 6F 70 45 6E 74 72 79 53 4C 69 73     ASCII "ckedPopEntrySLis"
  32. 7C8091A4   .  74 00                                               ASCII "t",0
  33. 7C8091A6   .  4E 54 44 4C 4C 2E 52 74 6C 49 6E 74 65 72 6C 6F     ASCII "NTDLL.RtlInterlo"
  34. 7C8091B6   .  63 6B 65 64 50 75 73 68 45 6E 74 72 79 53 4C 69     ASCII "ckedPushEntrySLi"
  35. 7C8091C6   .  73 74 00                                            ASCII "st",0
  36. 7C8091C9   .  4E 54 44 4C 4C 2E 52 74 6C 4C 65 61 76 65 43 72     ASCII "NTDLL.RtlLeaveCr"
  37. 7C8091D9   .  69 74 69 63 61 6C 53 65 63 74 69 6F 6E 00           ASCII "iticalSection",0
  38. 7C8091E7   .  4E 54 44 4C 4C 2E 52 74 6C 51 75 65 72 79 44 65     ASCII "NTDLL.RtlQueryDe"
  39. 7C8091F7   .  70 74 68 53 4C 69 73 74 00                          ASCII "pthSList",0
  40. 7C809200   .  4E 54 44 4C 4C 2E 52 74 6C 52 65 6D 6F 76 65 56     ASCII "NTDLL.RtlRemoveV"
  41. 7C809210   .  65 63 74 6F 72 65 64 45 78 63 65 70 74 69 6F 6E     ASCII "ectoredException"
  42. 7C809220   .  48 61 6E 64 6C 65 72 00                             ASCII "Handler",0
  43. 7C809228   .  4E 54 44 4C 4C 2E 52 74 6C 52 65 73 74 6F 72 65     ASCII "NTDLL.RtlRestore"
  44. 7C809238   .  4C 61 73 74 57 69 6E 33 32 45 72 72 6F 72 00        ASCII "LastWin32Error",0
  45. 7C809247   .  4E 54 44 4C 4C 2E 52 74 6C 43 61 70 74 75 72 65     ASCII "NTDLL.RtlCapture"
  46. 7C809257   .  43 6F 6E 74 65 78 74 00                             ASCII "Context",0
  47. 7C80925F   .  4E 54 44 4C 4C 2E 52 74 6C 43 61 70 74 75 72 65     ASCII "NTDLL.RtlCapture"
  48. 7C80926F   .  53 74 61 63 6B 42 61 63 6B 54 72 61 63 65 00        ASCII "StackBackTrace",0
  49. 7C80927E   .  4E 54 44 4C 4C 2E 52 74 6C 46 69 6C 6C 4D 65 6D     ASCII "NTDLL.RtlFillMem"
  50. 7C80928E   .  6F 72 79 00                                         ASCII "ory",0
  51. 7C809292   .  4E 54 44 4C 4C 2E 52 74 6C 4D 6F 76 65 4D 65 6D     ASCII "NTDLL.RtlMoveMem"
  52. 7C8092A2   .  6F 72 79 00                                         ASCII "ory",0
  53. 7C8092A6   .  4E 54 44 4C 4C 2E 52 74 6C 55 6E 77 69 6E 64 00     ASCII "NTDLL.RtlUnwind",0
  54. 7C8092B6   .  4E 54 44 4C 4C 2E 52 74 6C 5A 65 72 6F 4D 65 6D     ASCII "NTDLL.RtlZeroMem"
  55. 7C8092C6   .  6F 72 79 00                                         ASCII "ory",0
  56. 7C8092CA   .  4E 54 44 4C 4C 2E 52 74 6C 53 65 74 43 72 69 74     ASCII "NTDLL.RtlSetCrit"
  57. 7C8092DA   .  69 63 61 6C 53 65 63 74 69 6F 6E 53 70 69 6E 43     ASCII "icalSectionSpinC"
  58. 7C8092EA   .  6F 75 6E 74 00                                      ASCII "ount",0

Дэмн.Не влазит.

Добавлено спустя 11 минут
Code:
  1. 7C8092EF   .  4E 54 44 4C 4C 2E 52 74 6C 53 65 74 4C 61 73 74     ASCII "NTDLL.RtlSetLast"
  2. 7C8092FF   .  57 69 6E 33 32 45 72 72 6F 72 00                    ASCII "Win32Error",0
  3. 7C80930A   .  4E 54 44 4C 4C 2E 52 74 6C 54 72 79 45 6E 74 65     ASCII "NTDLL.RtlTryEnte"
  4. 7C80931A   .  72 43 72 69 74 69 63 61 6C 53 65 63 74 69 6F 6E     ASCII "rCriticalSection"
  5. 7C80932A   .  00                                                  ASCII 0
  6. 7C80932B   .  4E 54 44 4C 4C 2E 56 65 72 53 65 74 43 6F 6E 64     ASCII "NTDLL.VerSetCond"
  7. 7C80933B   .  69 74 69 6F 6E 4D 61 73 6B 00                       ASCII "itionMask",0
  8. 7C809011   .  4E 54 44 4C 4C 2E 52 74 6C 41 64 64 56 65 63 74     ASCII "NTDLL.RtlAddVect"
  9. 7C809021   .  6F 72 65 64 45 78 63 65 70 74 69 6F 6E 48 61 6E     ASCII "oredExceptionHan"
  10. 7C809031   .  64 6C 65 72 00                                      ASCII "dler",0
  11. 7C809036   .  4E 54 44 4C 4C 2E 52 74 6C 44 65 63 6F 64 65 50     ASCII "NTDLL.RtlDecodeP"
  12. 7C809046   .  6F 69 6E 74 65 72 00                                ASCII "ointer",0
  13. 7C80904D   .  4E 54 44 4C 4C 2E 52 74 6C 44 65 63 6F 64 65 53     ASCII "NTDLL.RtlDecodeS"
  14. 7C80905D   .  79 73 74 65 6D 50 6F 69 6E 74 65 72 00              ASCII "ystemPointer",0
  15. 7C80906A   .  4E 54 44 4C 4C 2E 52 74 6C 44 65 6C 65 74 65 43     ASCII "NTDLL.RtlDeleteC"
  16. 7C80907A   .  72 69 74 69 63 61 6C 53 65 63 74 69 6F 6E 00        ASCII "riticalSection",0
  17. 7C809089   .  4E 54 44 4C 4C 2E 52 74 6C 45 6E 63 6F 64 65 50     ASCII "NTDLL.RtlEncodeP"
  18. 7C809099   .  6F 69 6E 74 65 72 00                                ASCII "ointer",0
  19. 7C8090A0   .  4E 54 44 4C 4C 2E 52 74 6C 45 6E 63 6F 64 65 53     ASCII "NTDLL.RtlEncodeS"
  20. 7C8090B0   .  79 73 74 65 6D 50 6F 69 6E 74 65 72 00              ASCII "ystemPointer",0
  21. 7C8090BD   .  4E 54 44 4C 4C 2E 52 74 6C 45 6E 74 65 72 43 72     ASCII "NTDLL.RtlEnterCr"
  22. 7C8090CD   .  69 74 69 63 61 6C 53 65 63 74 69 6F 6E 00           ASCII "iticalSection",0
  23. 7C8090DB   .  4E 54 44 4C 4C 2E 52 74 6C 47 65 74 4C 61 73 74     ASCII "NTDLL.RtlGetLast"
  24. 7C8090EB   .  57 69 6E 33 32 45 72 72 6F 72 00                    ASCII "Win32Error",0
  25. 7C8090F6   .  4E 54 44 4C 4C 2E 52 74 6C 41 6C 6C 6F 63 61 74     ASCII "NTDLL.RtlAllocat"
  26. 7C809106   .  65 48 65 61 70 00                                   ASCII "eHeap",0
  27. 7C80910C   .  4E 54 44 4C 4C 2E 52 74 6C 46 72 65 65 48 65 61     ASCII "NTDLL.RtlFreeHea"
  28. 7C80911C   .  70 00                                               ASCII "p",0
  29. 7C80911E   .  4E 54 44 4C 4C 2E 52 74 6C 52 65 41 6C 6C 6F 63     ASCII "NTDLL.RtlReAlloc"
  30. 7C80912E   .  61 74 65 48 65 61 70 00                             ASCII "ateHeap",0
  31. 7C809136   .  4E 54 44 4C 4C 2E 52 74 6C 53 69 7A 65 48 65 61     ASCII "NTDLL.RtlSizeHea"
  32. 7C809146   .  70 00                                               ASCII "p",0
  33. 7C809148   .  4E 54 44 4C 4C 2E 52 74 6C 49 6E 69 74 69 61 6C     ASCII "NTDLL.RtlInitial"
  34. 7C809158   .  69 7A 65 53 4C 69 73 74 48 65 61 64 00              ASCII "izeSListHead",0
  35. 7C809165   .  4E 54 44 4C 4C 2E 52 74 6C 49 6E 74 65 72 6C 6F     ASCII "NTDLL.RtlInterlo"
  36. 7C809175   .  63 6B 65 64 46 6C 75 73 68 53 4C 69 73 74 00        ASCII "ckedFlushSList",0
  37. 7C809184   .  4E 54 44 4C 4C 2E 52 74 6C 49 6E 74 65 72 6C 6F     ASCII "NTDLL.RtlInterlo"
  38. 7C809194   .  63 6B 65 64 50 6F 70 45 6E 74 72 79 53 4C 69 73     ASCII "ckedPopEntrySLis"
  39. 7C8091A4   .  74 00                                               ASCII "t",0
  40. 7C8091A6   .  4E 54 44 4C 4C 2E 52 74 6C 49 6E 74 65 72 6C 6F     ASCII "NTDLL.RtlInterlo"
  41. 7C8091B6   .  63 6B 65 64 50 75 73 68 45 6E 74 72 79 53 4C 69     ASCII "ckedPushEntrySLi"
  42. 7C8091C6   .  73 74 00                                            ASCII "st",0
  43. 7C8091C9   .  4E 54 44 4C 4C 2E 52 74 6C 4C 65 61 76 65 43 72     ASCII "NTDLL.RtlLeaveCr"
  44. 7C8091D9   .  69 74 69 63 61 6C 53 65 63 74 69 6F 6E 00           ASCII "iticalSection",0
  45. 7C8091E7   .  4E 54 44 4C 4C 2E 52 74 6C 51 75 65 72 79 44 65     ASCII "NTDLL.RtlQueryDe"
  46. 7C8091F7   .  70 74 68 53 4C 69 73 74 00                          ASCII "pthSList",0
  47. 7C809200   .  4E 54 44 4C 4C 2E 52 74 6C 52 65 6D 6F 76 65 56     ASCII "NTDLL.RtlRemoveV"
  48. 7C809210   .  65 63 74 6F 72 65 64 45 78 63 65 70 74 69 6F 6E     ASCII "ectoredException"
  49. 7C809220   .  48 61 6E 64 6C 65 72 00                             ASCII "Handler",0
  50. 7C809228   .  4E 54 44 4C 4C 2E 52 74 6C 52 65 73 74 6F 72 65     ASCII "NTDLL.RtlRestore"
  51. 7C809238   .  4C 61 73 74 57 69 6E 33 32 45 72 72 6F 72 00        ASCII "LastWin32Error",0
  52. 7C809247   .  4E 54 44 4C 4C 2E 52 74 6C 43 61 70 74 75 72 65     ASCII "NTDLL.RtlCapture"
  53. 7C809257   .  43 6F 6E 74 65 78 74 00                             ASCII "Context",0
  54. 7C80925F   .  4E 54 44 4C 4C 2E 52 74 6C 43 61 70 74 75 72 65     ASCII "NTDLL.RtlCapture"
  55. 7C80926F   .  53 74 61 63 6B 42 61 63 6B 54 72 61 63 65 00        ASCII "StackBackTrace",0
  56. 7C80927E   .  4E 54 44 4C 4C 2E 52 74 6C 46 69 6C 6C 4D 65 6D     ASCII "NTDLL.RtlFillMem"
  57. 7C80928E   .  6F 72 79 00                                         ASCII "ory",0
  58. 7C809292   .  4E 54 44 4C 4C 2E 52 74 6C 4D 6F 76 65 4D 65 6D     ASCII "NTDLL.RtlMoveMem"
  59. 7C8092A2   .  6F 72 79 00                                         ASCII "ory",0
  60. 7C8092A6   .  4E 54 44 4C 4C 2E 52 74 6C 55 6E 77 69 6E 64 00     ASCII "NTDLL.RtlUnwind",0
  61. 7C8092B6   .  4E 54 44 4C 4C 2E 52 74 6C 5A 65 72 6F 4D 65 6D     ASCII "NTDLL.RtlZeroMem"
  62. 7C8092C6   .  6F 72 79 00                                         ASCII "ory",0
  63. 7C8092CA   .  4E 54 44 4C 4C 2E 52 74 6C 53 65 74 43 72 69 74     ASCII "NTDLL.RtlSetCrit"
  64. 7C8092DA   .  69 63 61 6C 53 65 63 74 69 6F 6E 53 70 69 6E 43     ASCII "icalSectionSpinC"
  65. 7C8092EA   .  6F 75 6E 74 00                                      ASCII "ount",0
  66. 7C8092EF   .  4E 54 44 4C 4C 2E 52 74 6C 53 65 74 4C 61 73 74     ASCII "NTDLL.RtlSetLast"
  67. 7C8092FF   .  57 69 6E 33 32 45 72 72 6F 72 00                    ASCII "Win32Error",0
  68. 7C80930A   .  4E 54 44 4C 4C 2E 52 74 6C 54 72 79 45 6E 74 65     ASCII "NTDLL.RtlTryEnte"
  69. 7C80931A   .  72 43 72 69 74 69 63 61 6C 53 65 63 74 69 6F 6E     ASCII "rCriticalSection"
  70. 7C80932A   .  00                                                  ASCII 0
  71. 7C80932B   .  4E 54 44 4C 4C 2E 56 65 72 53 65 74 43 6F 6E 64     ASCII "NTDLL.VerSetCond"
  72. 7C80933B   .  69 74 69 6F 6E 4D 61 73 6B 00                       ASCII "itionMask",0


Добавлено спустя 12 минут
Названия функций узнаем из листинга иды по соответствующему адресу.

Добавлено спустя 7 часов 48 минут
Забыл добавить, что сие актуально для WinXP Sp3 x86.

-----
TEST YOUR MIGHT


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

Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 16 августа 2014 18:26
· Личное сообщение · #4

Phantom007, unknownproject
Да, вопрос не в соответствии этих функций. Утилита dumpbin весь этот список раскрывает.
И адреса их загрузки тоже известны. Вопрос как эту подмену выполнить в OllyDbg, чтобы
потом сделать дамп?



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 16 августа 2014 18:31 · Поправил: Vovan666
· Личное сообщение · #5

ksol пишет:
Вопрос как эту подмену выполнить в OllyDbg, чтобы
потом сделать дамп?

А нахрена? Нормальные "импреки" это делают на лету, раз уж прям так зачесалось в ольке это сделать, юзай UIF(Universal Import Fixer)



Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 17 августа 2014 17:49
· Личное сообщение · #6

Vovan666
Спасибо! Но скачать UIF из раздела Инструменты не удалось. Яндекс кричит: не делай это!
Я использую обычный ImpREC . И, возможно поэтому, у меня в IAT'e например в 416140 вместо значения
7С80918А(kernel32.RestoreLastError) стоит 7C910340(ntdll.RtlRestoreLastWin32Error). Но ImpREC
указывает, что здесь forwarding!
Vovan666, вы не смогли бы указать ссылку на Армагеддон под Armadillo v3.7 ?


 eXeL@B —› Вопросы новичков —› forwarding функцй
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати