Есть файл формата mde – это прога+база из Access, только скомпилированная или запакованная как-то. Требуется немного подправить прогу (как обычно, в чисто образовательных целях зарегистрировать ее либо отучить от регистрации). Если открывать ее в Access, то сам Access при этом сворачивается в левый верхний угол, откуда его можно выманить после долгих уговоров, но... Можно посмотреть таблицы, формы, даже имена макросов и функций на VBA, но нельзя посмотреть сам текст на бейсике. Нельзя ничего удалять и добавлять. Нельзя отлаживать макросы – Access не дает ставить бряки. Можно запускать макросы но нормально запускаются далеко не все и прервать выполнение и посмотреть на него – нельзя. Пробовал ковырять руками, но ни до чего не доковырял. Там есть функция типа String, которая получает в кач-ве параметра имя юзера(тоже String), называется RegNum. Я думал заменить ее на какую-нить апишную ф-ю с такими же параметрами и такого же типа, с именем такой-же длины (ну чтоб просто в hex-редакторе переписать), а потом при регистрации ввести то, что надо. Но я не нашел подходящей функции.:-( Пробовал дрючить SoftICE-ом, но поскольку все это дело крутится внутри Access-овского интерпретатора, то я просто запутался. Есть мысль – попробовать найти описалово mde, распотрошить его на составляющие и попробовать скормить код проги (я очень подозреваю, что это будет очень смахивать на обычную прогу на VB) какому-нить декомпилятору, чтоб посмотреть, как он правильные серийник делает. Но боюсь, что такое возможно только теоретически, да и описалова я так и не нашел нигде. Программ, умеющих потрошить mde, я также не нашел... Прошу подсказать, что еще можно попробовать? Если кому интересно глянуть прогу – могу выслать, дистрибутив около 500 кб.
В экселе непомню в каком (97 или 2000) на запароленные VBScript помогало латание VBE6.DLL (VBasic for Application 6) Вот кусок исходник на масдасях: Код (Text): ... char path[]="SOFTWARE\\Classes\\TypeLib\\{000204EF-0000-0000-C000-000000000 046}\\4.0\\9\\win32"; .... char buffer[1024]; m_Path.GetWindowText(buffer,1024); unsigned long hs,ns; MapFileAndCheckSumA(buffer,&hs,&ns); CFile f; unsigned char Pass_Normal[]={0x0F,0x84,0xBB,0x00,0x00,0x00}; unsigned char Pass_Crack[]= {0x90,0x90,0x90,0x90,0x90,0x90}; unsigned char NS_Normal1[]={0x8b,0x86,0x24,0x02,0x00,0x00}; unsigned char NS_Normal2[]={0x8b,0x86,0x04,0x02,0x00,0x00}; unsigned char NS_Crack1[]={0x89,0x86,0x24,0x02,0x00,0x00}; unsigned char NS_Crack2[]={0x89,0x86,0x04,0x02,0x00,0x00}; switch (ns) { case 0x0268648: case 0x026B32F: case 0x0268446: case 0x026B12D: char buffer[1024]; m_Path.GetWindowText(buffer,1024); if (f.Open(buffer,CFile::modeReadWrite | CFile::shareExclusive | CFile::typeBinary)==NULL) { AfxMessageBox("Ошибка открытия файла библиотеки !",MB_OK | MB_ICONSTOP); return; } f.Seek(0x12a684,CFile::begin); switch (m_Password.GetCheck()) { case 0: f.Write(Pass_Normal,sizeof(Pass_Normal)); break; case 1: f.Write(Pass_Crack,sizeof(Pass_Crack)); break; case 2: break; } switch (m_NotShow.GetCheck()) { case 0: f.Seek(0x0C00E4,CFile::begin); f.Write(NS_Normal1,sizeof(NS_Normal1)); f.Seek(0x0C0101,CFile::begin); f.Write(NS_Normal2,sizeof(NS_Normal2)); break; case 1: f.Seek(0x0C00E4,CFile::begin); f.Write(NS_Crack1,sizeof(NS_Crack1)); f.Seek(0x0C0101,CFile::begin); f.Write(NS_Crack2,sizeof(NS_Crack2)); break; } f.Close(); break; default: AfxMessageBox("Выбранный файл не является библиотекой\n" "VBE6.DLL версии 6.00.8435 или файл изменён !",MB_OK | MB_ICONSTOP); return; } Может в чём поможет ?
Пробовал - результат такой-же. Может, версия Access-a не та? Я пробовал создавать новую базу, делать в ней одну форму и 1 таблицу и скармливать проге - ни фига она не создает, токо пишет кучу цифр на экран
А вот еще разок попробовал, на другой базе - все получилось... в чем же разница между ними, интересно...