Сейчас на форуме: Magister Yoda, subword (+9 невидимых) |
![]() |
eXeL@B —› Основной форум —› Декриптовать видоизменненый zip-файл |
Посл.ответ | Сообщение |
|
Создано: 16 июня 2008 15:34 · Личное сообщение · #1 Здравствуйте. Суть проблемы: Программа на бейсике, работающая со своими видоизменными zip-файлами. Когда обращаешься к какому-либо файлу, прога у обрабатывает свой zip-файл, и создает у себя в папке нормальный zip-файл. Декомпилировав нашел функцию DeCrypt, которая обрабатывает файл. Подскажите как перевести эту функцию на Делфи или Си. В аттаче один из zip-файлов. В винраре открывает, но с ошибкой и отображает не все файлы. Функция: Public Sub Decrypt(vstrEncryptedZipFilePath, vstrFinalZipFilePath) '110744A0 loc_110744A0: push ebp loc_110744A1: mov ebp, esp loc_110744A3: sub esp, 0000000Ch loc_110744A6: push 110021D6h ; MSVBVM60.DLL.__vbaExceptHandler loc_110744AB: mov eax, fs:[00h] loc_110744B1: push eax loc_110744B2: mov fs:[00000000h], esp loc_110744B9: sub esp, 0000006Ch loc_110744BC: push ebx loc_110744BD: push esi loc_110744BE: push edi loc_110744BF: mov var_C, esp loc_110744C2: mov var_8, 11001E60h loc_110744C9: xor edi, edi loc_110744CB: mov var_4, edi loc_110744CE: mov ebx, arg_8 loc_110744D1: push ebx loc_110744D2: mov eax, [ebx] loc_110744D4: call [eax+04h] loc_110744D7: mov edx, vstrEncryptedZipFilePath loc_110744DA: mov esi, [11001210h] loc_110744E0: lea ecx, var_20 loc_110744E3: mov var_18, edi loc_110744E6: mov var_20, edi loc_110744E9: mov var_24, edi loc_110744EC: mov var_34, edi loc_110744EF: mov var_3C, edi loc_110744F2: mov var_4C, edi loc_110744F5: mov var_5C, edi loc_110744F8: mov var_6C, edi loc_110744FB: call MSVBVM60.DLL.__vbaStrCopy loc_110744FD: mov edx, vstrFinalZipFilePath loc_11074500: lea ecx, var_18 loc_11074503: call MSVBVM60.DLL.__vbaStrCopy loc_11074505: lea edx, var_6C loc_11074508: lea ecx, var_18 loc_1107450B: push edi loc_1107450C: push edx loc_1107450D: mov var_64, ecx loc_11074510: mov var_6C, 00004008h loc_11074517: call [110011E0h] ; Dir loc_1107451D: mov edx, eax loc_1107451F: lea ecx, var_3C loc_11074522: call MSVBVM60.DLL.__vbaStrMove loc_11074528: push eax loc_11074529: push 1100B7A8h loc_1107452E: call MSVBVM60.DLL.__vbaStrCmp loc_11074534: mov esi, eax loc_11074536: lea ecx, var_3C loc_11074539: neg esi loc_1107453B: sbb esi, esi loc_1107453D: neg esi loc_1107453F: neg esi loc_11074541: call MSVBVM60.DLL.__vbaFreeStr loc_11074547: cmp si, di loc_1107454A: jz 11074563h loc_1107454C: lea ecx, var_6C loc_1107454F: lea eax, var_18 loc_11074552: push ecx loc_11074553: mov var_64, eax loc_11074556: mov var_6C, 00004008h loc_1107455D: call [11001128h] ; Kill(arg_1) loc_11074563: mov esi, [11001200h] ; FreeFile здесь я так понимаю начало loc_11074569: lea edx, var_4C loc_1107456C: push edx loc_1107456D: mov var_44, 80020004h loc_11074574: mov var_4C, 0000000Ah loc_1107457B: call FreeFile loc_1107457D: lea ecx, var_4C loc_11074580: mov edi, eax loc_11074582: call MSVBVM60.DLL.__vbaFreeVar loc_11074588: lea eax, var_4C loc_1107458B: mov var_44, 80020004h loc_11074592: push eax loc_11074593: mov var_4C, 0000000Ah loc_1107459A: call FreeFile loc_1107459C: mov si, ax loc_1107459F: lea ecx, var_4C loc_110745A2: add si, 0001h loc_110745A6: jo 110746F6h loc_110745AC: call MSVBVM60.DLL.__vbaFreeVar loc_110745B2: mov ecx, var_20 loc_110745B5: push ecx loc_110745B6: push edi loc_110745B7: push FFFFFFFFh loc_110745B9: push 00000020h loc_110745BB: call [110011ECh] ; Open # loc_110745C1: mov edx, var_18 loc_110745C4: push edx loc_110745C5: push esi loc_110745C6: push FFFFFFFFh loc_110745C8: push 00000020h loc_110745CA: call [110011ECh] ; Open # loc_110745D0: push edi loc_110745D1: call [110011F0h] ; LOF(arg_1) loc_110745D7: push 00000000h loc_110745D9: mov var_70, eax loc_110745DC: call [110011D8h] ; Chr$(arg_1) loc_110745E2: mov ecx, var_70 loc_110745E5: mov var_44, eax loc_110745E8: lea eax, var_4C loc_110745EB: lea edx, var_5C loc_110745EE: push eax loc_110745EF: push ecx loc_110745F0: push edx loc_110745F1: mov var_4C, 00000008h loc_110745F8: call [110011B0h] ; arg_1 = String(arg_2) loc_110745FE: lea eax, var_5C loc_11074601: push eax loc_11074602: call MSVBVM60.DLL.__vbaStrVarMove loc_11074608: mov edx, eax loc_1107460A: lea ecx, var_24 loc_1107460D: call MSVBVM60.DLL.__vbaStrMove loc_11074613: lea ecx, var_5C loc_11074616: lea edx, var_4C loc_11074619: push ecx loc_1107461A: push edx loc_1107461B: push 00000002h loc_1107461D: call MSVBVM60.DLL.__vbaFreeVarList loc_11074623: add esp, 0000000Ch loc_11074626: lea eax, var_24 loc_11074629: push edi loc_1107462A: push 00000001h loc_1107462C: push eax loc_1107462D: push 00000000h loc_1107462F: call [11001130h] ; Get # loc_11074635: mov ecx, var_24 loc_11074638: mov eax, 00000008h loc_1107463D: mov var_64, ecx loc_11074640: lea ecx, var_3C loc_11074643: push ecx loc_11074644: mov var_6C, eax loc_11074647: sub esp, 00000010h loc_1107464A: mov edx, [ebx] loc_1107464C: mov ecx, esp loc_1107464E: push ebx loc_1107464F: mov [ecx], eax loc_11074651: mov eax, var_68 loc_11074654: mov [ecx+04h], eax loc_11074657: mov eax, var_64 loc_1107465A: mov [ecx+08h], eax loc_1107465D: mov eax, var_60 loc_11074660: mov [ecx+0Ch], eax loc_11074663: call [edx+24h] loc_11074666: mov edx, var_3C loc_11074669: lea ecx, var_24 loc_1107466C: mov var_3C, 00000000h loc_11074673: call MSVBVM60.DLL.__vbaStrMove loc_11074679: push esi loc_1107467A: lea ecx, var_24 loc_1107467D: push 00000001h loc_1107467F: push ecx loc_11074680: push 00000000h loc_11074682: call MSVBVM60.DLL.__vbaPut4 loc_11074688: push edi loc_11074689: mov edi, [11001114h] ; Close #arg_1 loc_1107468F: call edi loc_11074691: push esi loc_11074692: call edi loc_11074694: push 110746D7h loc_11074699: jmp 110746B8h loc_1107469B: lea ecx, var_3C loc_1107469E: call MSVBVM60.DLL.__vbaFreeStr loc_110746A4: lea edx, var_5C loc_110746A7: lea eax, var_4C loc_110746AA: push edx loc_110746AB: push eax loc_110746AC: push 00000002h loc_110746AE: call MSVBVM60.DLL.__vbaFreeVarList loc_110746B4: add esp, 0000000Ch loc_110746B7: ret End Sub ![]() ![]() |
|
Создано: 16 июня 2008 15:52 · Личное сообщение · #2 |
|
Создано: 16 июня 2008 17:22 · Личное сообщение · #3 |
|
Создано: 16 июня 2008 19:00 · Личное сообщение · #4 |
|
Создано: 16 июня 2008 19:18 · Личное сообщение · #5 вызвать экспортируемую функу с нужными тебе параметрами (300 раз) и хватать после ее обработки результаты. не смотрел 4то там за файл, но имхо даже залоадлайбрерить и вызывать функу как вариант. либо посмотреть вверх дерева вызовов и класть при вызове целевой фунции все нужные параметры в стек (если кроме заданых 2 переменных в надфункциях еще 4то-то кладется-проверяется) Public Sub Decrypt(vstrEncryptedZipFilePath, vstrFinalZipFilePath) '110744A0 ----- HOW MUCH BLOOD WOULD YOU SHED TO STAY ALIVE ![]() |
|
Создано: 16 июня 2008 19:31 · Личное сообщение · #6 |
|
Создано: 16 июня 2008 19:35 · Поправил: AVE · Личное сообщение · #7 Хорошо. На начальном этапе в функцию передаются путь к файлу. 110744A0 > 55 PUSH EBP 110744A1 . 8BEC MOV EBP,ESP 110744A3 . 83EC 0C SUB ESP,0C 110744A6 . 68 D6210011 PUSH <JMP.&MSVBVM60.__vbaExceptHandler> ; SE handler installation 110744AB . 64:A1 00000000 MOV EAX,DWORD PTR FS:[0] 110744B1 . 50 PUSH EAX 110744B2 . 64:8925 000000>MOV DWORD PTR FS:[0],ESP 110744B9 . 83EC 6C SUB ESP,6C после этого вызова я имею нужный мне файл: 11074682 . FF15 3C100011 CALL DWORD PTR DS:[<&MSVBVM60.__vbaPut4>>; MSVBVM60.__vbaPut4 Название и путь ко всем файлам я знаю Помогите кодом ![]() ![]() |
|
Создано: 16 июня 2008 19:40 · Личное сообщение · #8 |
|
Создано: 16 июня 2008 19:45 · Личное сообщение · #9 |
|
Создано: 16 июня 2008 20:47 · Личное сообщение · #10 clsZipEncrypt
P.S. Powered by VB Decompiler Pro v5.0 ![]() ----- EnJoy! ![]() |
|
Создано: 16 июня 2008 21:04 · Поправил: AVE · Личное сообщение · #11 |
|
Создано: 16 июня 2008 21:31 · Личное сообщение · #12 AVE пишет: Ну как ты думаешь я ее декомпилил? я думаю ты увидишь разницу в коде между лайт и про версией ;) даже если просто сравнить ф-ции, выложеные тобой и мной AVE пишет: Тока у мну немного подругому, видимо потому что Lite версия. видимо ;) кста прога скомпилена в натив, в случае с пикодом, дизасм был бы более полным AVE пишет: Подскажите, когда я эту ддл-ку пытаюсь в олю засунуть пишет Module LOADDLL has empty code section у меня OllyDbg грузит длл AddInSupport.dll без проблем. проверь файл loaddll.exe в папке с OllyDbg loaddll.exe EEB87B64 ----- EnJoy! ![]() |
|
Создано: 16 июня 2008 21:39 · Личное сообщение · #13 Jupiter пишет: AVE пишет: Подскажите, когда я эту ддл-ку пытаюсь в олю засунуть пишет Module LOADDLL has empty code section у меня OllyDbg грузит длл AddInSupport.dll без проблем. проверь файл loaddll.exe в папке с OllyDbg loaddll.exe EEB87B64 Это видимо из за сборки. взял другую ольку все нармально. и loaddll.exe одинаковые. ![]() |
|
Создано: 16 июня 2008 21:39 · Личное сообщение · #14 |
|
Создано: 17 июня 2008 11:26 · Личное сообщение · #15 |
|
Создано: 23 июня 2008 13:11 · Личное сообщение · #16 |
|
Создано: 23 июня 2008 15:39 · Личное сообщение · #17 |
|
Создано: 23 июня 2008 16:15 · Личное сообщение · #18 |
|
Создано: 23 июня 2008 16:46 · Поправил: inf1kek · Личное сообщение · #19 |
|
Создано: 25 июня 2008 11:57 · Поправил: AVE · Личное сообщение · #20 |
![]() |
eXeL@B —› Основной форум —› Декриптовать видоизменненый zip-файл |