eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: helg, parfetka (+3 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Протекторы —› Помогите снять Obsidium.
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 7.3 (гость)
Статус: Участник

Создано: 9 декабря 2007 22:44 New!
Цитата · Личное сообщение · #1

Привет всем ! В запросах на взлом я оставляла сообщение о программе ServiceMP v3.321 hxxp://www.shark-media.ru/files_2/shark_m/Servicemp.zip
Триал 30 дней. PEiD сказал, что там Obsidium.
В предыдущей версии 3.29 я смогла сделать всё сама, прочитав всего одну статью про IceLicense. Я использовала лоадер который в местах вызова OnTrialExpired и прочих не хороших функциях делал прыжок на код OnRegistered. Найти IceLicense помогла dede.
Что касается этой версии, то вынуждена признать, что эта защита кажется мне очень сильной. Я нашла всего одну статью на хакер.ру, прочитав её поняла, что мои шансы нулевые. Я новичок во всём этом, обратилась сюда в надежде на помощь.
Если кто-то может дать совет или указать на хорошие статьи, которые понятны будут новичку и помогут самостоятельно снять протектор, или ткнуть носом и подсказать пошагово, как сделать самостоятельно – буду очень благодарна.
Так же буду, благодарна, если кто-то даст готовую программу, к тому же знаю, что она уже есть.

Ранг: 1045.7 (!!!!)
Статус: Участник

Создано: 10 декабря 2007 05:11 New!
Цитата · Личное сообщение · #2

Yani пишет:
Что касается этой версии, то вынуждена признать, что эта защита кажется мне очень сильной. Я нашла всего одну статью на хакер.ру, прочитав её поняла, что мои шансы нулевые. Я новичок во всём этом, обратилась сюда в надежде на помощь.

Чего такой пессемизм? Бери ольку последний фантом и запускай прогу!Фантом обходит всю аниотладку! Оеп обсид пракический не тырит! Находится любым способом хоть на esp-4 хоть на бряк на запись в дата!
Импорт так же не сложно Приципиально не отличаеться в разных версиях Если секция кода перемещена в выделеную память Делается так ставишь бряк на VirtualAlloc третье срабатывание ставишь меморибряк на запись выделеный регион бряк сработал бряк на ret Снимаешь секцию кода без релоков Дальше так же data и остальные секции в зависимости от компилятора


Ранг: 271.6 (наставник)
Статус: Участник

Создано: 10 декабря 2007 05:17 New!
Цитата · Личное сообщение · #3

pavka
Ты никогда не думал о том, что стоит накатать стотью?
А то арка так обозлился, что киляет все статьи и сундук не пополняется =(

Ранг: 1045.7 (!!!!)
Статус: Участник

Создано: 10 декабря 2007 05:48 New!
Цитата · Личное сообщение · #4

Spirit пишет:
Ты никогда не думал о том, что стоит накатать стотью?

С меня писатель никакой ;) Да и угостили SVKP 2 ковыряю сейчас Тем болееYani пишет:
В предыдущей версии 3.29 я смогла сделать всё сама, прочитав всего одну статью про IceLicense. Я использовала лоадер который в местах вызова OnTrialExpired и прочих не хороших функциях делал прыжок на код OnRegistered. Найти IceLicense помогла dede.

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


Ранг: 469.0 (мудрец)
Статус: Участник
[www.AHTeam.org]

Создано: 10 декабря 2007 06:41 · Поправил: KingSise New!
Цитата · Личное сообщение · #5

На кряклабе есть тема, про антиатладку обсидиума:

--> Link <--

Статья: http://www.exelab.ru/art/?action=view&id=302


Ранг: 88.4 (постоянный)
Статус: Участник

Создано: 10 декабря 2007 06:44 · Поправил: VaZeR New!
Цитата · Личное сообщение · #6

Смотрел я этот Obsidium секции не перемешены, OEP целый, импорт загажен, но кроме просто переходников там есть и полностью эмулируемые функции, но их там не много около 10 что ли. Можно и в ручную все восстановить. Как будет свободное время постарась помочь.
Насчет антиотладки, то там последний фантом справляется.

Ранг: 7.3 (гость)
Статус: Участник

Создано: 10 декабря 2007 13:43 New!
Цитата · Личное сообщение · #7

Ребята, спасибо за подсказки и поддержку ! Буду пробовать. Нашла ещё несколько статей на английском. По ходу буду писать о результатах.
­ Пессимизм от неопытности. Ручную распаковку как я поняла с upx обычно начинают, а не с Obsidium. Конечно увидеть статью про конкретно эту программу и повторить по ней было бы очень интересно !


Ранг: 88.4 (постоянный)
Статус: Участник

Создано: 10 декабря 2007 14:05 New!
Цитата · Личное сообщение · #8

Ну конкретно по этой проге дать не могу нет времени. Но могу дать другую где описана аналогичная ситуация.
Сразу хочу сказать что статья очень сырая и не дописаная, там я не дописал восстановление полностью эмулируемых API. Их придется восстановить вручную. Да и так ошибок в ней очень много. Может быть она тебе чем то сможет помочь.
rapidshare.com/files/75571910/___________Obsidium_1.3.0.4.rar.html

Ранг: 1045.7 (!!!!)
Статус: Участник

Создано: 10 декабря 2007 14:13 · Поправил: pavka New!
Цитата · Личное сообщение · #9

Yani
Если вы правильно определились с опциями и версией держи скрипт Если будет криптованый код скажи дам еще

{ Атач доступен только для участников форума } - Oep+NoMoveCode+ Import.rar
P.S забыл сказать в иат в конце каждой библы обсид пишет как правило лишнее значение их можно просто обнулять это типа трюк ;) ищи все равно не найдешь

Ранг: 7.3 (гость)
Статус: Участник

Создано: 10 декабря 2007 20:48 New!
Цитата · Личное сообщение · #10

С помощь скрипта который предоставил Pavka удалось получить импорт и правильно попасть на ОЕП (79B804). Полезной оказалась информация по разделителям (если так можно выразиться) между библиотеками. Очень важным для определения правильных границ импорта (7ADC88-7AE6B8) и его размера (A30) оказался метод который использовал в статье VaZeR. Так же помогла информация об установке атрибутов доступа к секциям. К сожалению скрипт из статьи не заработал, ровно как и скрипт Obsidium V1.3.0.0 от heXer & fly.
Вообще со скриптами какая то беда. То запускается и работает, то глючит, то оеп не правильный, то программа выдаёт ошибки, то на оеп не останавливается. UDD подчищаю, точки остановки убираю. Помогает только перезагрузка и удаление всей Ольки с настройками. Олю использую The0DBG, фантом 1.20, все галки включены.
Но это не главное. Сейчас хочется понять, что осталось сделать дальше и как это сделать.
Когда все функции удастся распознать, мне нужно будет делать дамп. Это лучше сделать дойдя до оеп самостоятельно, например поставив точку остановки на доступ к известному теперь адресу или можно использовать скрипт ? То что он делает с импортом не помешает правильности дампа ? Что лучше использовать для дампа, плагин Ольки или petools ? В дампе нужно будет указать правильный оеп и потом вставить импорт с помощью imprec ? А в новую секцию или на тоже место ?
Играет роль для правильности снятия дампа и правильного распознавания функций скриптом то, в каком состоянии сейчас программа ? Я имею ввиду триал сейчас просрочен и программа требует ввести код.
Как нужно распознавать те функции которых не хватает ? Если кто-то может сказать на моём примере, на одной из функций которые не распознаны у меня. Например, это функция такая то, узнать это можно так и так. Зашла сюда, нажала то, видишь, вот её название. Остальные делай так же. Это очень поможет…
Хотя прогресс в продвижении к финалу налицо, меня огорчает то, что моей заслуги тут нет, а понимания мало. Спасибо, что помогаете мне !
Нулями помечены предполагаемые разделители секций, там где три точки, там я сократила. Вроде там всё ок. Полный файл дерева приаттачу.

oleaut32.dll SysFreeString
oleaut32.dll SysReAllocStringLen
oleaut32.dll SysAllocStringLen
00000000
advapi32.dll RegQueryValueExA
advapi32.dll RegOpenKeyExA
advapi32.dll RegCloseKey
00000000
user32.dll GetKeyboardType
user32.dll DestroyWindow
user32.dll LoadStringA
user32.dll MessageBoxA
user32.dll CharNextA
00000000
kernel32.dll GetACP
kernel32.dll Sleep
kernel32.dll VirtualFree
kernel32.dll VirtualAlloc
kernel32.dll GetTickCount
kernel32.dll QueryPerformanceCounter
kernel32.dll GetCurrentThreadId
kernel32.dll InterlockedDecrement
kernel32.dll InterlockedIncrement
? 0000 012E012B
kernel32.dll WideCharToMultiByte
kernel32.dll SetCurrentDirectoryA
kernel32.dll MultiByteToWideChar
? 0000 01265BF0
kernel32.dll lstrcpyn
kernel32.dll LoadLibraryExA
kernel32.dll GetThreadLocale
kernel32.dll GetStartupInfoA
kernel32.dll GetProcAddress
kernel32.dll GetModuleHandleA
kernel32.dll GetModuleFileNameA
kernel32.dll GetLocaleInfoA
kernel32.dll GetLastError
? 0000 012E01E1
kernel32.dll FreeLibrary
kernel32.dll FindFirstFileA
kernel32.dll FindClose
? 0000 012E0215 Может ли тут быть один разделитель ? Отделять один вызов kernel32.dll от другого или такие разделители бывают только между разными библиотеками ?
? 0000 012E0222
kernel32.dll CreateThread
kernel32.dll CompareStringA
kernel32.dll WriteFile
kernel32.dll UnhandledExceptionFilter
kernel32.dll SetFilePointer
kernel32.dll SetEndOfFile
kernel32.dll RtlUnwind
kernel32.dll ReadFile
kernel32.dll RaiseException
kernel32.dll GetStdHandle
kernel32.dll GetFileSize
kernel32.dll GetFileType
kernel32.dll CreateFileA
kernel32.dll CloseHandle
? 0000 012E02E5
kernel32.dll TlsSetValue
kernel32.dll TlsGetValue
kernel32.dll LocalAlloc
kernel32.dll GetModuleHandleA
00000000 Тут может не быть разделителя вообще ? То что писал Pavka по этому поводу, это обязательное правило или нет ? Или Obsidium может так делать, а может и нет ?
user32.dll CreateWindowExA
user32.dll WindowFromPoint
user32.dll WindowFromDC
….
user32.dll CharToOemBuffA
user32.dll CharToOemA
user32.dll AdjustWindowRectEx
user32.dll ActivateKeyboardLayout
00000000
msimg32.dll GradientFill
00000000
gdi32.dll UnrealizeObject
gdi32.dll TextOutW
gdi32.dll TextOutA

gdi32.dll BitBlt
gdi32.dll Arc
gdi32.dll AbortDoc
00000000
version.dll VerQueryValueA
version.dll GetFileVersionInfoSizeA
version.dll GetFileVersionInfoA
? 0000 012E14F6
? 0000 01265BF0 тут один разделитель библиотек.
kernel32.dll lstrcpy
kernel32.dll lstrcmp
kernel32.dll WritePrivateProfileStringA
kernel32.dll WriteFile
kernel32.dll WideCharToMultiByte
kernel32.dll WaitForSingleObject
kernel32.dll WaitForMultipleObjects
? 0000 012E156B
kernel32.dll VirtualAlloc
kernel32.dll SuspendThread
kernel32.dll Sleep
kernel32.dll SizeofResource

kernel32.dll GlobalAlloc
kernel32.dll GlobalAddAtomA
kernel32.dll GetVersionExA
? 0000 012E1766
kernel32.dll GetTickCount
kernel32.dll GetThreadLocale
kernel32.dll GetStringTypeExW

kernel32.dll GetDiskFreeSpaceA
kernel32.dll GetDateFormatA
kernel32.dll GetCurrentThreadId
? 0000 012E186A
kernel32.dll GetCurrentDirectoryA
kernel32.dll GetComputerNameA
kernel32.dll GetCPInfo
kernel32.dll GetACP
? 0000 012E18AB
kernel32.dll InterlockedIncrement
kernel32.dll InterlockedExchange
kernel32.dll InterlockedDecrement

kernel32.dll CompareStringW
kernel32.dll CompareStringA
kernel32.dll CloseHandle
00000000
advapi32.dll RegSetValueExA
advapi32.dll RegQueryValueExA
advapi32.dll RegQueryInfoKeyA

advapi32.dll RegDeleteKeyA
advapi32.dll RegCreateKeyExA
advapi32.dll RegCloseKey
00000000
oleaut32.dll GetErrorInfo
oleaut32.dll GetActiveObject
oleaut32.dll SysFreeString
00000000
ole32.dll ReleaseStgMedium
ole32.dll DoDragDrop
ole32.dll RevokeDragDrop

ole32.dll CoInitializeEx
ole32.dll CoInitialize
ole32.dll IsEqualGUID
00000000
kernel32.dll Sleep
00000000
ole32.dll CLSIDFromString
ole32.dll CoTaskMemFree
ole32.dll StringFromCLSID
00000000
oleaut32.dll SafeArrayPtrOfIndex
oleaut32.dll SafeArrayPutElement
oleaut32.dll SafeArrayGetElement

oleaut32.dll VariantCopy
oleaut32.dll VariantClear
oleaut32.dll VariantInit
00000000
comctl32.dll UninitializeFlatSB
comctl32.dll InitializeFlatSB
comctl32.dll _TrackMouseEvent

comctl32.dll ImageList_Destroy
comctl32.dll ImageList_Create
comctl32.dll InitCommonControls
00000000
imm32.dll ImmSetCompositionWindow
imm32.dll ImmSetCompositionFontA
imm32.dll ImmGetCompositionStringW
imm32.dll ImmGetCompositionStringA
imm32.dll ImmReleaseContext
imm32.dll ImmGetContext
00000000
shell32.dll Shell_NotifyIcon
shell32.dll ShellExecuteEx
shell32.dll ShellExecuteA
shell32.dll SHGetFileInfo
shell32.dll SHFileOperation
shell32.dll DragQueryFile
shell32.dll DragFinish
shell32.dll DragAcceptFiles
? 0000 012E1F59
shell32.dll SHGetSpecialFolderLocation
shell32.dll SHGetPathFromIDList
shell32.dll SHGetMalloc
shell32.dll SHGetDesktopFolder
shell32.dll SHBrowseForFolder
00000000
winspool.drv OpenPrinterA
winspool.drv EnumPrintersA
winspool.drv DocumentPropertiesA
winspool.drv ClosePrinter
00000000
comdlg32.dll PageSetupDlgA
comdlg32.dll PrintDlgA
comdlg32.dll ChooseColorA
comdlg32.dll GetSaveFileNameA
comdlg32.dll GetOpenFileNameA
00000000
msimg32.dll GradientFill
00000000
kernel32.dll MulDiv
00000000
winmm.dll PlaySound
? 0000 012E2084
? 0000 012E2091
? 0000 012E209E
? 0000 012E20AB Где то тут два разделителя, если используются только winmm.dll и gdi32.dll. А может тут присутствовать другая библиотека ?
? 0000 012E20B8
? 0000 012E20C5
? 0000 012E20D2
? 0000 012E20DF
? 0000 012E20EC
gdi32.dll GetCharacterPlacementW
gdi32.dll GetCharacterPlacementA
? 0000 012E2113
gdi32.dll GetCharacterPlacementW
gdi32.dll GetCharacterPlacementA
00000000
quartz.dll AMGetErrorTextA
00000000


{ Атач доступен только для участников форума } - tree.txt


Ранг: 450.3 (мудрец)
Статус: Участник

Создано: 10 декабря 2007 21:19 · Поправил: ToBad New!
Цитата · Личное сообщение · #11

Yani пишет:
Где то тут два разделителя, если используются только winmm.dll и gdi32.dll. А может тут присутствовать другая библиотека ?


Думаю, что может. Точнее сказать может KingSise, так как он программу давно сделал. Напиши ему в личку или подожди пока тут отпишет...

pavka
У меня скрипт не работает вообще. Оля екзекриптор и шадов. На какой сборке ты работаешь ?


Ранг: 259.8 (наставник)
Статус: Участник
Advisor

Создано: 10 декабря 2007 21:33 New!
Цитата · Личное сообщение · #12

Yani пишет:
Вообще со скриптами какая то беда

Значит скрипты не универсальные.Надо править в них,либо константы,либо цепочку байт на поиске,а возможно и сами циклы.


Ранг: 469.0 (мудрец)
Статус: Участник
[www.AHTeam.org]

Создано: 10 декабря 2007 22:07 New!
Цитата · Личное сообщение · #13

Народ, вобем так, кому нужно, пишите в личку (если ранг не меньше 100), скину распакованный файл.


Ранг: 755.0 (! !)
Статус: Участник
Student

Создано: 11 декабря 2007 01:26 New!
Цитата · Личное сообщение · #14

KingSise пишет:
скину распакованный файл
скока wmz?
Лучше статейку забацай! Хотя бы грубую...

Ранг: 260.2 (наставник)
Статус: Участник

Создано: 11 декабря 2007 02:04 New!
Цитата · Личное сообщение · #15

ToBad пишет:
Оля екзекриптор и шадов. На какой сборке ты работаешь ?

шадов+фантом+хайдтулс и обсид сосет, хотя я думаю можно только фантомом обойтись..
а скрипт не пашет, так чуть по другому надо..

Ранг: 1045.7 (!!!!)
Статус: Участник

Создано: 11 декабря 2007 05:51 New!
Цитата · Личное сообщение · #16

Yani пишет:
Тут может не быть разделителя вообще ? , это обязательное правило или нет ?

Ты можешь это очень просто узнать если поищешь ссылки в секции кода на пустышки их просто не будет.
Неопределенные функи :
1 как правило не более пяти переходник типа mov eax, они вызываються всегда одинаково типа
0032059C B8 70053200 MOV EAX,320570 GetCommandLine ; ASCII ""D:\CrackTools\The0DBG\The0DBG\OllyDBG.eXe""
003205A1 - E9 9A195501 JMP 01871F40
003205A6 B8 FFFFFFFF MOV EAX,-1 GetCurrentProcess
003205AB - E9 90195501 JMP 01871F40
003205B0 B8 8C080000 MOV EAX,88C GetCurrentProcessId
003205B5 - E9 86195501 JMP 01871F40
003205BA B8 0501280A MOV EAX,0A280105 ; GetVersion
003205BF - E9 7C195501 JMP 01871F40
2 оставшиеся функи можешь оттрасировать о в разных версиях они немного по разному вызываються но всегда из секции прота. В принципе перед тем как трасироват посмотри ссылки где вызываються функи довольно часто просто вставить функцию по смыслу кода Так же смотри табличку внимательно например
kernel32.dll GetVersionExA
? 0000 012E1766 <---- вероятнее всего GetVersion
kernel32.dll GetTickCount
kernel32.dll MultiByteToWideChar
? 0000 01265BF0 <------вероятнее всего lstrlen
kernel32.dll lstrcpyn
и т.д
Для обсида обычно использую простую не патченую ольку и фантом Дамп делать без разницы чем главное не забывать про доступ

Yani пишет:
Как нужно распознавать те функции которых не хватает ? Если кто-то может сказать на моём примере, на одной из функций которые не распознаны у меня. Например, это функция такая то, узнать это можно так и так. Зашла сюда, нажала то, видишь, вот её название. Остальные делай так же. Это очень поможет…
Хотя прогресс в продвижении к финалу налицо, меня огорчает то, что моей заслуги тут нет, а понимания мало. Спасибо

Запиши неопознаные функи Поставь хардварный бряк на оеп и перезапусти прогу! поставь eip начало переходника и трейсь акуратно обходя ловушки как правило будет заход в секцию прота и смотри в стеке и в регистрах Пару фунок оттрейсишь поймешь что к чему ;)

Ранг: 115.1 (ветеран)
Статус: Участник

Создано: 11 декабря 2007 07:16 New!
Цитата · Личное сообщение · #17

sniperZ пишет:
шадов+фантом+хайдтулс и обсид сосет


и винда сосет =)
http://exelab.ru/f/index.php?action=vthread&forum=1&topic=7529&page= 19#22


Ранг: 88.4 (постоянный)
Статус: Участник

Создано: 11 декабря 2007 09:12 New!
Цитата · Личное сообщение · #18

Вот линк на дамп с восстановленным импортом. Но в этой проге нет кусков кода. Из за этого она и падает. Хотя я здесь не особо смотрел, так как небыло времени:
rapidshare.com/files/75764345/dump_.rar.html

Ранг: 1045.7 (!!!!)
Статус: Участник

Создано: 11 декабря 2007 09:48 New!
Цитата · Личное сообщение · #19

VaZeR пишет:
Но в этой проге нет кусков кода. Из за этого она и падает

Это покриптованые куски что ли? Так их восстановить в разы проще чем импорт


Ранг: 450.3 (мудрец)
Статус: Участник

Создано: 11 декабря 2007 11:54 New!
Цитата · Личное сообщение · #20

VaZeR пишет:
Вот линк на дамп с восстановленным импортом.


Так у тебя значительной части импорта не хватает. Его длина больше. Наверное из за этого падает.
После вызовов из version.dll идут ещё вызовы из:
kernel32.dll
advapi32.dll
oleaut32.dll
ole32.dll
kernel32.dll
ole32.dll
oleaut32.dll
comctl32.dll
imm32.dll
shell32.dll
winspool.drv
comdlg32.dll
msimg32.dll
kernel32.dll
winmm.dll
gdi32.dll
quartz.dll

В принципе Yani выше выкладывала файлик. Склонен думать, что с границами и размером импорта она не ошиблась.


Ранг: 88.4 (постоянный)
Статус: Участник

Создано: 11 декабря 2007 12:03 · Поправил: VaZeR New!
Цитата · Личное сообщение · #21

ToBad
Я не ошибся с размерами. Просто так отработал импрек. Так что у меня и нет после библы version.dll не чего.


{ Атач доступен только для участников форума } - tree.txt


Ранг: 450.3 (мудрец)
Статус: Участник

Создано: 11 декабря 2007 12:22 · Поправил: ToBad New!
Цитата · Личное сообщение · #22

VaZeR пишет:
tree.txt


А между 003AE2F0 и 003AE480 разве не идут вызовы из kernel32.dll ?

С новым импортом заработал дамп ?


Ранг: 88.4 (постоянный)
Статус: Участник

Создано: 11 декабря 2007 13:53 · Поправил: VaZeR New!
Цитата · Личное сообщение · #23

ToBad
Да ты прав там у меня действительно в импорте есть несколько косяков.
Сейчас внимательнее посмотрел и вроде теперь с импортом все правильно, но в конце есть ещё несколько не определившихся. Это случайно не API Обсидиума? С таким импортом прога теперь падает на вызове CreateWindowExA адрес 408E4F в оригинале тоже вызывается та же самая API но там все правильно работает, а у меня ошибка доступа.

{ Атач доступен только для участников форума } - tree_1.txt

Ранг: 1045.7 (!!!!)
Статус: Участник

Создано: 11 декабря 2007 15:10 New!
Цитата · Личное сообщение · #24

Yani пишет:
winmm.dll PlaySound
? 0000 012E2084
? 0000 012E2091
? 0000 012E209E
? 0000 012E20AB Где то тут два разделителя, если используются только winmm.dll и gdi32.dll. А может тут присутствовать другая библиотека ?
? 0000 012E20B8
? 0000 012E20C5
? 0000 012E20D2
? 0000 012E20DF
? 0000 012E20EC

Неопределившийся блок после скрипта если откинуть пустышки обычно API Обсида Это можно просто определить посмотрев реренсы и передаваемые аргументы


Ранг: 450.3 (мудрец)
Статус: Участник

Создано: 11 декабря 2007 15:21 · Поправил: ToBad New!
Цитата · Личное сообщение · #25

Я сравнил импорт который получил VaZeR с импортом который получила Yani с помощью скрипта от pavka и с импортом от KingSise.
Самый близкий к идеалу на мой взгляд это импорт от VaZeR. Изначально Yani правильно определила размер импорта и скрипт ей очень помог распознать большинство функций, но там где скрипт не справился у неё пока пусто. KingSise не нашёл самого последнего работающего файла, а тот что выслал очень сырой. Большая проблема с группой вызовов из kernel32.dll которые идут после version.dll и которые кстати VaZeR до недавнего момента тоже проигнорировал (вернее его злобный импрек ), а так же короткий размер импорта у KingSise сказались на неработоспособность его версии. Вот какие нестыковки есть у VaZeR:

1) В этой части отличаются ординалы.

KingSise
1 003AE570 comctl32.dll 0059 UninitializeFlatSB
1 003AE574 comctl32.dll 0055 InitializeFlatSB
1 003AE578 comctl32.dll 005A _TrackMouseEvent

VaZeR
1 003AE570 comctl32.dll 005A UninitializeFlatSB
1 003AE574 comctl32.dll 0055 InitializeFlatSB
1 003AE578 comctl32.dll 005B _TrackMouseEvent


2)
VaZeR
1 003AE32C kernel32.dll 0314 SetLastError

pavka
1 003AE32C kernel32.dll 02BF RestoreLastError


3) Нераспознанные функции
1 003AE678 kernel32.dll 0216 InitializeCriticalSection
0 003AE67C ? 0000 012C20A3
1 003AE680 kernel32.dll 0216 InitializeCriticalSection
0 003AE684 ? 0000 012C20BD
1 003AE688 kernel32.dll 0216 InitializeCriticalSection
1 003AE68C kernel32.dll 0216 InitializeCriticalSection
1 003AE690 kernel32.dll 0216 InitializeCriticalSection


4) Если тут вызов из user32.dll, то перед ним должна быть «пустышка» ?
1 003AE694 user32.dll 01E4 MessageBoxW


5) И тут ты уверен, что ничего нет ?
0 003AE410 ? 0000 012E18AB

Ранг: 1045.7 (!!!!)
Статус: Участник

Создано: 11 декабря 2007 15:42 New!
Цитата · Личное сообщение · #26

ToBad пишет:
Изначально Yani правильно определила размер импорта и скрипт ей очень помог распознать большинство функций, но там где скрипт не справился у неё пока пусто. KingSise не нашёл самого последнего работающего файла, а тот что выслал очень сырой.

Я не знаю что там распаковывал KingSise и не собираюсь смотреть! Так же не видел файл что распаковывает Yani
Если скрипт у нее отработал и встал на оеп значит импорт у нее весь правильный ;) И по тому что она запостила очень похоже на то ;) Имхо я думаю она найдет неопределившиеся функи сама ;) А не будет ковырять разные кривые дампы !К чему заниматься херней сравнивать какие то дампы ?


Ранг: 88.4 (постоянный)
Статус: Участник

Создано: 11 декабря 2007 16:12 · Поправил: VaZeR New!
Цитата · Личное сообщение · #27

0 003AE410 ? 0000 012E18AB
Да тут действительно есть API но вызов достаточно странный вроде как и переходник на API, но срабатывает один условный переход и мы попадаем на команды
xor eax, eax
ret
В API передается только один параметр.
Что то не как не могу понять что это за API.


Ранг: 450.3 (мудрец)
Статус: Участник

Создано: 11 декабря 2007 16:24 New!
Цитата · Личное сообщение · #28

pavka пишет:
К чему заниматься херней сравнивать какие то дампы ?


Ну ей конечно не к чему, лучше разобраться самой, а мне вот интересно понять ошибки других. Казалось бы не сложная задача на первый взгляд, но удивляет то, что работающей проги ещё пока не видно, и причём дело как мне кажется не в хитрых эмулированных функциях, а зачастую с размером и правильностью импорта... Никого не хочу обидеть, все мы учимся...

Ранг: 1045.7 (!!!!)
Статус: Участник

Создано: 11 декабря 2007 18:17 New!
Цитата · Личное сообщение · #29

ToBad пишет:
дело как мне кажется не в хитрых эмулированных функциях,

В обсиде нет ни каких хитрых проэмуленых функций ;)
ToBad пишет:
и причём дело как мне кажется не в хитрых эмулированных функциях, а зачастую с размером и правильностью импорта...

? креститься надо когда кажется Хочешь научится так учись бери прогу да распаковывай чего гадать почему чей то дамп не работает Написать скрипт трейсер дело пяти минут поставить четыре бряка да чекать eax


Ранг: 390.8 (мудрец)
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 11 декабря 2007 19:00 · Поправил: Maximus New!
Цитата · Личное сообщение · #30

ToBad могу тебе с 100% увереностью сказать что
1 003AE32C kernel32.dll 0314 SetLastError
1 003AE32C kernel32.dll 02BF RestoreLastError
это одно и тоже, однако павкин RestoreLastError однозначно не заработает на 2000-й винде.
Однако пафка облажался.

VaZeR признавайся чем восстанавливаешь импорт? на сколько я помню имрек пишет именно RestoreLastError
. 1 . 2 . >>
 eXeL@B —› Протекторы —› Помогите снять Obsidium.
Эта тема закрыта. Ответы больше не принимаются.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS