Сейчас на форуме: subword, rtsgreg1989, zds, _MBK_ (+5 невидимых)

 eXeL@B —› Основной форум —› И снова SecuRom 7.х.х
Посл.ответ Сообщение


Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 12 октября 2007 11:48
· Личное сообщение · #1

Короче нашел способ добраться почти до ОЕР (дабы все отладчики на свете палються этой байдой)...
99 % защищенных SecuRom написаны на Visual C++ (по крайней мере другие мне еще не попадались)
В установочной папке всегда присутствует msvcr71.dll и еже с ним.
Так вот... после выполнения GetModuleHandleA после ОЕР выполняется вызов функи __set_app_type из msvcr71.dll... Я просто делаю бекап данной библы и патчу на входе в функи EBFE ... запускаю прогу.... и жду когда SecuRom проверит диск и прога зациклиться... затем аттачусь к процессу F9... F12 и я в данной функции... восстанавливаю замененные байты...(кстати можно уже смело дампить, дамп будет рабочим!)... нажимаю F8 иииии...... Процесс запускается и виснет где-то недрах ntdll.... короче отлаживать процесс не получается... единственный плюс, пока прога стоит в отладчике нетронутой можно смело восстановить импорт и сдампить... а вот ВМ уже хрен восстановишь....
Вот и вопрос - почему так происходит и как этого избежать...
Кто-то мне сказал - "значит секюром забрал все отладочные прерывания себе"... так это или нет?
И что ДЕЛАТЬ в данной ситуации?

Спасибо заранее....

-----
aLL rIGHTS rEVERSED!





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 12 октября 2007 11:53
· Личное сообщение · #2

Да... совсем забыл...
Никакие бряки не работают ни хардварные не обычные не на память..

-----
aLL rIGHTS rEVERSED!





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 12 октября 2007 13:46
· Личное сообщение · #3

Никто ничего дельного написать не могет? Мде... однако...

-----
aLL rIGHTS rEVERSED!




Ранг: 160.9 (ветеран), 1thx
Активность: 0.050
Статус: Участник

Создано: 12 октября 2007 13:55
· Личное сообщение · #4

Из тех 7.х.х что мне попадались, можно легко трасировать код и ВМ в том числе. Просто переодически нуно обходить анти-отладку. До ОЕП просто добраться через инжект. Самое интересно это проход в отладчике до ОЕП. Там очень много интересного можно увидеть.




Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 12 октября 2007 14:02
· Личное сообщение · #5

Cigan
Посоветовал бы как эту анти-отладку пройти... нифига не получается...

-----
aLL rIGHTS rEVERSED!





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 12 октября 2007 14:06
· Личное сообщение · #6

Cigan
У меня начало прота вот такое

01C0D8E0 > 9C PUSHFD
01C0D8E1 9C PUSHFD
01C0D8E2 83EC 24 SUB ESP,24
01C0D8E5 C74424 20 563B4>MOV DWORD PTR SS:[ESP+20],DE4F3B56
01C0D8ED C74424 1C 7B030>MOV DWORD PTR SS:[ESP+1C],37B
01C0D8F5 895C24 18 MOV DWORD PTR SS:[ESP+18],EBX
01C0D8F9 BB B0D8C001 MOV EBX,TestDriv.01C0D8B0
01C0D8FE C14C24 20 18 ROR DWORD PTR SS:[ESP+20],18
01C0D903 897C24 14 MOV DWORD PTR SS:[ESP+14],EDI
01C0D907 8B3B MOV EDI,DWORD PTR DS:[EBX]
01C0D909 017C24 20 ADD DWORD PTR SS:[ESP+20],EDI
01C0D90D 83C3 04 ADD EBX,4
01C0D910 66:FF4C24 1C DEC WORD PTR SS:[ESP+1C]
01C0D915 0FACCD 00 SHRD EBP,ECX,0 ; Shift constant out of range 1..31
01C0D919 ^ 75 EC JNZ SHORT TestDriv.01C0D907
01C0D91B 804C24 20 01 OR BYTE PTR SS:[ESP+20],1
01C0D920 90 NOP
01C0D921 0FA4D5 00 SHLD EBP,EDX,0 ; Shift constant out of range 1..31
01C0D925 8B5C24 24 MOV EBX,DWORD PTR SS:[ESP+24]
01C0D929 8B7C24 20 MOV EDI,DWORD PTR SS:[ESP+20]
01C0D92D 50 PUSH EAX
01C0D92E 58 POP EAX
01C0D92F 895C24 20 MOV DWORD PTR SS:[ESP+20],EBX
01C0D933 8B5C24 18 MOV EBX,DWORD PTR SS:[ESP+18]
01C0D937 897C24 24 MOV DWORD PTR SS:[ESP+24],EDI
01C0D93B 90 NOP
01C0D93C 8B7C24 14 MOV EDI,DWORD PTR SS:[ESP+14]
01C0D940 83C4 20 ADD ESP,20
01C0D943 9D POPFD
01C0D944 73 13 JNB SHORT TestDriv.01C0D959
01C0D946 810424 32728C01 ADD DWORD PTR SS:[ESP],TestDriv.018C7232
01C0D94D 56 PUSH ESI
01C0D94E 5E POP ESI
01C0D94F 810424 C3443400 ADD DWORD PTR SS:[ESP],3444C3
01C0D956 ^ EB FA JMP SHORT TestDriv.01C0D952
01C0D958 3183 EC20C744 XOR DWORD PTR DS:[EBX+44C720EC],EAX
01C0D95E 24 1C AND AL,1C
01C0D960 DAC8 FCMOVE ST,ST
01C0D962 6300 ARPL WORD PTR DS:[EAX],AX


причем после JMP-а идет RET в небо....
Я так понял у секброма есть обработчик событий подобных....
как его найти?

-----
aLL rIGHTS rEVERSED!





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 12 октября 2007 14:10
· Личное сообщение · #7

bibendum - в этой секции EP... потом процесс пыгает est

01A06773 893E MOV DWORD PTR DS:[ESI],EDI
01A06775 56 PUSH ESI
01A06776 FF15 53D4E401 CALL DWORD PTR DS:[<&KERNEL32.GetVersionExA>] ; kernel32.GetVersionExA
01A0677C 8B4E 10 MOV ECX,DWORD PTR DS:[ESI+10]
01A0677F 890D CC4BCF01 MOV DWORD PTR DS:[1CF4BCC],ECX
01A06785 8B46 04 MOV EAX,DWORD PTR DS:[ESI+4]
01A06788 A3 D84BCF01 MOV DWORD PTR DS:[1CF4BD8],EAX
01A0678D 8B56 08 MOV EDX,DWORD PTR DS:[ESI+8]
01A06790 8915 DC4BCF01 MOV DWORD PTR DS:[1CF4BDC],EDX
01A06796 8B76 0C MOV ESI,DWORD PTR DS:[ESI+C]
01A06799 81E6 FF7F0000 AND ESI,7FFF
01A0679F 8935 D04BCF01 MOV DWORD PTR DS:[1CF4BD0],ESI
01A067A5 83F9 02 CMP ECX,2
01A067A8 74 0C JE SHORT TestDriv.01A067B6
01A067AA 81CE 00800000 OR ESI,8000
01A067B0 8935 D04BCF01 MOV DWORD PTR DS:[1CF4BD0],ESI
01A067B6 C1E0 08 SHL EAX,8
01A067B9 03C2 ADD EAX,EDX
01A067BB A3 D44BCF01 MOV DWORD PTR DS:[1CF4BD4],EAX
01A067C0 33FF XOR EDI,EDI
01A067C2 57 PUSH EDI
01A067C3 FF15 57D4E401 CALL DWORD PTR DS:[<&KERNEL32.GetModuleHandleA>] ; kernel32.GetModuleHandleA
01A067C9 66:8138 4D5A CMP WORD PTR DS:[EAX],5A4D
01A067CE 75 1F JNZ SHORT TestDriv.01A067EF
01A067D0 8B48 3C MOV ECX,DWORD PTR DS:[EAX+3C]
01A067D3 03C8 ADD ECX,EAX
01A067D5 8139 50450000 CMP DWORD PTR DS:[ECX],4550
01A067DB 75 12 JNZ SHORT TestDriv.01A067EF
01A067DD 0FB741 18 MOVZX EAX,WORD PTR DS:[ECX+18]
01A067E1 3D 0B010000 CMP EAX,10B
01A067E6 74 1F JE SHORT TestDriv.01A06807
01A067E8 3D 0B020000 CMP EAX,20B
01A067ED 74 05 JE SHORT TestDriv.01A067F4
01A067EF 897D E4 MOV DWORD PTR SS:[EBP-1C],EDI
01A067F2 EB 27 JMP SHORT TestDriv.01A0681B

Вот сюда

-----
aLL rIGHTS rEVERSED!




Ранг: 160.9 (ветеран), 1thx
Активность: 0.050
Статус: Участник

Создано: 12 октября 2007 14:21
· Личное сообщение · #8

Ну ret там не ведет в небо. Просто ты валишься на первом же анти-дебаг трюке.




Ранг: 283.6 (наставник), 56thx
Активность: 0.130
Статус: Участник
Author of GeTaOEP

Создано: 12 октября 2007 16:01 · Поправил: DillerInc
· Личное сообщение · #9

DaRKSiDE пишет:
"значит секюром забрал все отладочные прерывания себе"

...это не так.

Я пользуюсь SICE + IceExt.
Когда запущенный отладчик просто пасётся где-то в недрах ОС,то протектор его не палит.А так всё прекрасно отлаживается,только надо обходить анти-трассировочные механизмы.
Чтобы выйти к OEP лучше применять метод перехвата WinAPI,как предложил Cigan.
Я тут уже выкладывал свою утилиту для этого.Вот более обновлённая версия.

-----
the Power of Reversing team





Ранг: 283.6 (наставник), 56thx
Активность: 0.130
Статус: Участник
Author of GeTaOEP

Создано: 12 октября 2007 16:04 · Поправил: DillerInc
· Личное сообщение · #10

Какого хрена аттачи не цепляются...??

ADD.
Damn!
Раз так,то никакой утилиты не будет.

-----
the Power of Reversing team




Ранг: 162.4 (ветеран), 11thx
Активность: 0.060
Статус: Участник

Создано: 12 октября 2007 16:38
· Личное сообщение · #11

Не горячись - это видимо не тока у тебя.
Иногда получается.



Ранг: 63.1 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 12 октября 2007 18:51
· Личное сообщение · #12

Действительно многие аттачи не цепляются. Что за нах. DillerInc ждем твоей обновы.




Ранг: 155.4 (ветеран)
Активность: 0.140
Статус: Участник
Робо-Алкаш

Создано: 13 октября 2007 00:09
· Личное сообщение · #13

Недавно начал ковыряцца с Секуромом... смотрел некоторые лоадеры... вот например никто не знает чей это лоадер "procyon.exe" Часто его вижу...

-----
Researcher





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 13 октября 2007 12:13
· Личное сообщение · #14

DillerInc

Спасибо за помощь! Может кинешь эту утилиту мне на мыло? darkside_ahteam@mail.ru
Заранее премного благодарен!

-----
aLL rIGHTS rEVERSED!





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 13 октября 2007 12:16
· Личное сообщение · #15

DillerInc

Чесно говоря пока еще отловом WinAPI еще не занимался...
Ну делал пару раз инжект своей длл в проги (незащищенные) и то путем сплайсинга (если я правильно написал? )

-----
aLL rIGHTS rEVERSED!




Ранг: 5.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 декабря 2007 12:26
· Личное сообщение · #16

Вожусь с диском защищенным SecuROM 7.x и застопорился на дампе.

У экзешника Image Base 0x10000000, а память для гадостей SecuROM'а выделяется выше (например, 0x0A000000). Поэтому не могу просто сдампить экзешник и прикрутить к его концу выделенную память, т.к. надо еще адреса переходов исправлять, т.е. заменять jmp 0x0A000000 на jmp 0x1A000000, да и сомневаюсь, что дамп после этого будет работать.

Может есть более простое решение для подобной задачи?




Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 19 декабря 2007 15:24
· Личное сообщение · #17

xlETO пишет:
Может есть более простое решение для подобной задачи?


Простых решений нет...
Что за диск, что за программа... подробнее...

-----
aLL rIGHTS rEVERSED!




Ранг: 5.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 декабря 2007 16:39 · Поправил: xlETO
· Личное сообщение · #18

Диск DVD'ишный, программу назвать не могу (да и толку от этого - в инэте все равно не встречается), написана на MS VC++.

Хмм, появилась мысль, что если занять все свободные регионы памяти до 0x10000000 используя например VirtualAlloc(Ex), то когда SecuROM запросит память - ему вернется участок памяти расположенный за экзешником.

Еще нашел плагин для OllyDbg - Memory Manage v1.0 (https://www.openrce.org/downloads/details/216/Memory_Manage https://www.openrce.org/downloads/details/216/Memory_Manage ). С его помощью можно выделить нужный участок памяти, указав его начало и размер.




Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 19 декабря 2007 16:49
· Личное сообщение · #19

xlETO
На мой вопрос ответь...
Тогда и на твой ответят

-----
aLL rIGHTS rEVERSED!




Ранг: 5.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 декабря 2007 16:50
· Личное сообщение · #20

Обнови страницу, так порадовался озарению, что забыл про остальное забыл




Ранг: 283.6 (наставник), 56thx
Активность: 0.130
Статус: Участник
Author of GeTaOEP

Создано: 19 декабря 2007 17:10
· Личное сообщение · #21

xlETO пишет:
ему вернется участок памяти расположенный за экзешником

...а если участок за образом уже занят какой-нибудь библиотекой??Тем более что,насколько мне известно,протектор не располагает всю свою память одним куском(случай с игрой FEAR отбрасываем).Ты можешь сдампить и прикрутить один кусок,а потом окажется,что какой-нибудь обработчик ВМ читает/передаёт управление в какой-нибудь иной регион памяти.

-----
the Power of Reversing team




Ранг: 5.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 декабря 2007 17:31 · Поправил: xlETO
· Личное сообщение · #22

DillerInc пишет:
протектор не располагает всю свою память одним куском


Понимаю, но и памяти свободной ему много не останется.
Будет свободен промежуток памяти после экзешника и до первой библиотеки (а если библиотека близко расположена, то ее можно перебазировать DllRebaser'ом).

Поэтому сдамплю весь промежуток памяти после экзешника и до библиотеки, а там уж разберемся...


DillerInc пишет:
а если участок за образом уже занят какой-нибудь библиотекой


Это ладно, просто придется добавить в конец файла пустую секцию размером с занятый участок, а уже после нее вставлять дамп регионов памяти.

Может потом и перестроить получится, главное чтобы дамп работал - остальное можно потом подкрутить.



Ранг: 5.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 декабря 2007 14:42 · Поправил: xlETO
· Личное сообщение · #23

Так, с памятью разобрался.

Поскажите существуют ли какие-нибудь наработки/инструменты приводящие хотя бы частично в порядок секцию кода или собирающие регионы памяти, чтобы дамп не такой большой был?


 eXeL@B —› Основной форум —› И снова SecuRom 7.х.х
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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