Сейчас на форуме: (+7 невидимых) |
![]() |
eXeL@B —› Протекторы —› Помогите найти вызов функции |
Посл.ответ | Сообщение |
|
Создано: 15 октября 2012 23:19 · Личное сообщение · #1 Решил вот исследовать программу ViKing. Вроде все распаковал, но походу не все. Буквально все исходники на руках и вижу код, но где идет работа с реестром, а именно с работа с ключами. Вот пример дампа API запросов программы, где четко видна работа с реестром. RegOpenKeyExW ( HKEY_CURRENT_USER, "Software\ViKing", 0, KEY_READ | KEY_CREATE_SUB_KEY | KEY_SET_VALUE, 0x0012f2f8 ) GetLastError ( ) memset ( 0x0638e5ec, 0, 76 ) GetLastError ( ) RtlEnterCriticalSection ( 0x772065c0 ) GetLastError ( ) GetLastError ( ) GetLastError ( ) memset ( 0x0638e5ec, 0, 76 ) GetLastError ( ) RtlLeaveCriticalSection ( 0x772065c0 ) GetLastError ( ) GetLastError ( ) GetLastError ( ) GetLastError ( ) GetLastError ( ) RtlInitUnicodeStringEx ( 0x0012f188, "Software\ViKing" ) GetLastError ( ) GetLastError ( ) GetLastError ( ) GetLastError ( ) GetLastError ( ) NtOpenKeyEx ( 0x0012f2f8, KEY_READ | KEY_CREATE_SUB_KEY | KEY_SET_VALUE, 0x0012f118, 0 ) GetLastError ( ) GetLastError ( ) GetLastError ( ) GetLastError ( ) memset ( 0x0638e4c0, 0, 56 ) GetLastError ( ) GetLastError ( ) GetLastError ( ) GetLastError ( ) RtlNtStatusToDosError ( STATUS_SUCCESS ) GetLastError ( ) GetLastError ( ) memset ( 0x0638dfc0, 0, 56 ) GetLastError ( ) InterlockedCompareExchange ( 0x003a0238, 1, 0 ) RtlEnterCriticalSection ( 0x772065c0 ) InterlockedDecrement ( 0x003a0238 ) GetLastError ( ) HeapAlloc ( 0x00340000, 0, 468 ) InterlockedCompareExchange ( 0x003a0238, 1, 0 ) InterlockedIncrement ( 0x00409064 ) InterlockedDecrement ( 0x003a0238 ) memset ( 0x05988fec, 0, 448 ) RtlLeaveCriticalSection ( 0x772065c0 ) InterlockedDecrement ( 0x00409064 ) InterlockedCompareExchange ( 0x003a0238, -1, 0 ) InterlockedDecrement ( 0x0598b51c ) GetLastError ( ) HeapFree ( 0x00340000, 0, 0x0598b518 ) RtlFreeHeap ( 0x00340000, 0, 0x0598b518 ) InterlockedCompareExchange ( 0x024c3c7c, 4, 8 ) InterlockedIncrement ( 0x05988fdc ) InterlockedExchange ( 0x003a0238, 0 ) GetLastError ( ) HeapAlloc ( 0x00340000, 0, 12 ) strcpy_s ( 0x05987090, 12, "ContainsKey" ) GetLastError ( ) TryEnterCriticalSection ( 0x0038be60 ) HeapFree ( 0x00340000, 0, 0x05987090 ) RtlFreeHeap ( 0x00340000, 0, 0x05987090 ) LeaveCriticalSection ( 0x0038be60 ) strcmp ( "ContainsKey", "IsCompatibleKey" ) InterlockedCompareExchange ( 0x0259627c, 8, 4 ) GetLastError ( ) HeapAlloc ( 0x00340000, 0, 12 ) RegQueryValueExW ( 0x0000054c, "Activation", NULL, 0x0012f384, NULL, 0x0012f380 ) strcpy_s ( 0x05987090, 12, "ContainsKey" ) GetLastError ( ) RtlInitUnicodeStringEx ( 0x0012f1ac, "Activation" ) HeapFree ( 0x00340000, 0, 0x05987090 ) RtlFreeHeap ( 0x00340000, 0, 0x05987090 ) GetLastError ( ) HeapAlloc ( 0x00340000, 0, 12 ) strcpy_s ( 0x05987090, 12, "ContainsKey" ) GetLastError ( ) NtQueryValueKey ( 0x0000054c, 0x0012f1ac, KeyValueFullInformationAlign64, 0x0012f0e8, 144, 0x0012f0c4 ) HeapFree ( 0x00340000, 0, 0x05987090 ) RtlFreeHeap ( 0x00340000, 0, 0x05987090 ) GetLastError ( ) HeapAlloc ( 0x00340000, 0, 12 ) strcpy_s ( 0x05987090, 12, "ContainsKey" ) GetLastError ( ) HeapFree ( 0x00340000, 0, 0x05987090 ) RtlFreeHeap ( 0x00340000, 0, 0x05987090 ) RtlNtStatusToDosError ( STATUS_SUCCESS ) GetLastError ( ) HeapAlloc ( 0x00340000, 0, 12 ) strcpy_s ( 0x05987090, 12, "ContainsKey" ) GetLastError ( ) HeapFree ( 0x00340000, 0, 0x05987090 ) RtlFreeHeap ( 0x00340000, 0, 0x05987090 ) GetLastError ( ) HeapAlloc ( 0x00340000, 0, 12 ) strcpy_s ( 0x05987090, 12, "ContainsKey" ) GetLastError ( ) HeapFree ( 0x00340000, 0, 0x05987090 ) InterlockedCompareExchange ( 0x0259627c, 4, 8 ) RtlFreeHeap ( 0x00340000, 0, 0x05987090 ) InterlockedCompareExchange ( 0x0259627c, 8, 4 ) GetLastError ( ) RegQueryValueExW ( 0x0000054c, "Activation", NULL, 0x0012f384, 0x0259a6dc, 0x0012f380 ) HeapAlloc ( 0x00340000, 0, 12 ) strcpy_s ( 0x05987090, 12, "ContainsKey" ) GetLastError ( ) RtlInitUnicodeStringEx ( 0x0012f1ac, "Activation" ) HeapFree ( 0x00340000, 0, 0x05987090 ) RtlFreeHeap ( 0x00340000, 0, 0x05987090 ) GetLastError ( ) HeapAlloc ( 0x00340000, 0, 12 ) strcpy_s ( 0x05987090, 12, "ContainsKey" ) NtQueryValueKey ( 0x0000054c, 0x0012f1ac, KeyValueFullInformationAlign64, 0x0012f0e8, 144, 0x0012f0c4 ) GetLastError ( ) HeapFree ( 0x00340000, 0, 0x05987090 ) RtlFreeHeap ( 0x00340000, 0, 0x05987090 ) GetLastError ( ) HeapAlloc ( 0x00340000, 0, 12 ) RtlAllocateHeap ( 0x00340000, 0, 383 ) strcpy_s ( 0x05987090, 12, "ContainsKey" ) GetLastError ( ) HeapFree ( 0x00340000, 0, 0x05987090 ) RtlFreeHeap ( 0x00340000, 0, 0x05987090 ) GetLastError ( ) HeapAlloc ( 0x00340000, 0, 12 ) strcpy_s ( 0x05987090, 12, "ContainsKey" ) GetLastError ( ) HeapFree ( 0x00340000, 0, 0x05987090 ) NtQueryValueKey ( 0x0000054c, 0x0012f1ac, KeyValueFullInformationAlign64, 0x059435d8, 383, 0x0012f0c4 ) RtlFreeHeap ( 0x00340000, 0, 0x05987090 ) GetLastError ( ) Программа написана на .NET и защита была Obfuscated. Исходник вижу, главная прога ViKing.exe грузит только DLL, а в ViKing.Engine.dll основной код программы. Только вот нет нигде работы с реестром, все перерыл, потом пришло в голову что в ресурсе находится код активации. Но то ли у меня руки кривые, то ли я чего то не так понял. Хочу посмотреть к чему привязка идет для создания серийника, если уж простая перестановка ОС требует покупки новой лицензии. Есть еще DLL остальные, но вроде там ничего особенного. Возможно там, что то не углядел. Вообщем не могу понять как защищена часть работы с реестром. Помогите разобраться. ![]() |
|
Создано: 15 октября 2012 23:26 · Поправил: KingSise · Личное сообщение · #2 если это .НЕТ, то можно посмотреть в сторону SaveSetting "AppName", "Section", "Key", "Setting" GetSetting("AppName", "Section", "Key") а вообще стандартные классы насколько я помню Microsoft.Win32.Registry, Microsoft.Win32.RegistryKey [добавил] Ессли нет вызовов в самом ехе, ищи в длл ----- -=истина где-то рядом=- ![]() |
|
Создано: 15 октября 2012 23:27 · Поправил: yltalex · Личное сообщение · #3 Сам ViKing уже DeObfuscated ![]() ViKing.Engine.dll уже DeObfuscated ![]() Сам Viking можно скачать тут https://rapidshare.com/files/2919790880/Original.rar ![]() |
|
Создано: 15 октября 2012 23:35 · Личное сообщение · #4 KingSise пишет: если это .НЕТ, то можно посмотреть в сторону SaveSetting "AppName", "Section", "Key", "Setting" GetSetting("AppName", "Section", "Key") а вообще стандартные классы насколько я помню Microsoft.Win32.Registry, Microsoft.Win32.RegistryKey Сейчас посмотрел, тоже нет, проблема в том что нет даже текстовых строк с упоминанием разделов реестра и ничего близкого, в ViKing.Engine.dll где основной код все модули перекапустил, все не то. Именно параметры реестра, названия ключей реестра, функций работы с реестрами нигде нет, будто из ничего появляется. ![]() |
|
Создано: 16 октября 2012 00:24 · Поправил: plutos · Личное сообщение · #5 Кнопка "ПРАВКА" на что? ----- Give me a HANDLE and I will move the Earth. ![]() |
|
Создано: 16 октября 2012 01:49 · Личное сообщение · #6 |
|
Создано: 16 октября 2012 03:36 · Личное сообщение · #7 |
|
Создано: 16 октября 2012 05:53 · Личное сообщение · #8 А че париться с апи монитором? Возьми рефлектор и смотри, че там (http://exelab.ru/f/action=vthread&forum=1&topic=16650&page=19#16). ![]() |
|
Создано: 16 октября 2012 11:11 · Личное сообщение · #9 Я же конечно первым делом и посмотрел рефлектором на все, но там нет ни строк с названием полей реестра ни функций ввода/вывода в реестр. Мне интересен сам кусок кода где идет работа с реестром и лицензионными данными, чтоб узнать к чему идет привязка лицензии в системе, так как любая переустановка ОС требует покупки лицензии. В Viking почти все функции у меня показывает как: public void Procedure_5(JobInfoBase jobInfoBase_0, ThreadStatus threadStatus_1) { throw new Exception("Error, ViKing Runtime library not loaded!"); } независимо от названия функции и входных параметров. Может я не правильно распаковал ViKing.exe потому, что в ViKing.Engine.dll все хорошо. ![]() |
|
Создано: 16 октября 2012 11:32 · Личное сообщение · #10 прогони прогу в KDT http://portal.b-at-s.net/download.php?view.53 и увидишь какие функции используются ![]() |
|
Создано: 21 октября 2012 01:08 · Личное сообщение · #11 |
![]() |
eXeL@B —› Протекторы —› Помогите найти вызов функции |