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

ВИДЕОКУРС ВЗЛОМ
обновлён 2 декабря!


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

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

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

 eXeL@B —› Основной форум —› Декриптовать видоизменненый zip-файл
Посл.ответ Сообщение


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

Создано: 16 июня 2008 15:34 New!
Цитата · Личное сообщение · #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


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


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

Создано: 16 июня 2008 15:52 New!
Цитата · Личное сообщение · #2

Все функции связанные с криптовкой, разкриптовкой.

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


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

Создано: 16 июня 2008 17:22 New!
Цитата · Личное сообщение · #3

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


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

Создано: 16 июня 2008 19:00 New!
Цитата · Личное сообщение · #4

KingSise Кстате неплахая идея

А как это сделать? Файлов около 300 штук.


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

Создано: 16 июня 2008 19:18 New!
Цитата · Личное сообщение · #5

вызвать экспортируемую функу с нужными тебе параметрами (300 раз) и хватать после ее обработки результаты. не смотрел 4то там за файл, но имхо даже залоадлайбрерить и вызывать функу как вариант. либо посмотреть вверх дерева вызовов и класть при вызове целевой фунции все нужные параметры в стек (если кроме заданых 2 переменных в надфункциях еще 4то-то кладется-проверяется)
Public Sub Decrypt(vstrEncryptedZipFilePath, vstrFinalZipFilePath) '110744A0


Ранг: 598.5 (!)
Статус: Модератор
Research & Development

Создано: 16 июня 2008 19:31 New!
Цитата · Личное сообщение · #6

выложи прогу, чтобы её можно было нормально препарировать


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

Создано: 16 июня 2008 19:35 · Поправил: AVE New!
Цитата · Личное сообщение · #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


Название и путь ко всем файлам я знаю

Помогите кодом


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

Создано: 16 июня 2008 19:40 New!
Цитата · Личное сообщение · #8

Jupiter с прогой еще база идет на 70мегов

Да и она когда просто скопирована не хочет запускаться. Там для бейсика всякая хрень устанавливается


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

Создано: 16 июня 2008 19:45 New!
Цитата · Личное сообщение · #9

вот прога если поможет slil.ru/25901608


Ранг: 598.5 (!)
Статус: Модератор
Research & Development

Создано: 16 июня 2008 20:47 New!
Цитата · Личное сообщение · #10

clsZipEncrypt


Public Sub Encrypt(vstrOrigZipFilePath, vstrEncryptedZipFilePath) '11074240
loc_11074262: var_8 = 11001E50h
loc_1107429B: call MSVBVM60.DLL.__vbaStrCopy(edi, 11001210h, arg_8)
loc_110742A3: call MSVBVM60.DLL.__vbaStrCopy
loc_110742AD: var_64 = ""
loc_110742C2: var_3C = Dir(&H4008)
loc_110742D9: neg esi
loc_110742DB: sbb esi, esi
loc_110742DD: neg esi
loc_110742DF: neg esi
If (var_3C = 1100B7A8h) <> edi Then
loc_110742F3: var_64 = ""
loc_110742FD: Kill &H4008
End If
loc_1107430D: var_44 = 80020004h
loc_11074314: var_4C = 10
loc_1107432B: var_44 = 80020004h
loc_11074342: FreeFile(""C) = FreeFile(""C) + 0001h
If Err.Number <> 0 Then GoTo loc_11074496
loc_1107435B: call Open #(00000020h, FFFFFFFFh, FreeFile(""C, edi), "")
loc_1107436A: call Open #(00000020h, FFFFFFFFh, FreeFile(""C), "")
loc_11074385: var_44 = Chr$(00000000h)
loc_11074391: var_4C = 8
loc_11074398: var_5C = @String(LOF(FreeFile(""C, edi)))
loc_110743A2: call MSVBVM60.DLL.__vbaStrVarMove(var_5C, ""C)
loc_110743AD: var_24 = MSVBVM60.DLL.__vbaStrVarMove(var_5C, ""C)
loc_110743CF: call Get #(00000000h, var_24, 00000001h, FreeFile(""C, edi))
loc_110743DD: var_64 = var_24
loc_110743E4: var_6C = 8
loc_11074403: call frmMain.SetPropA("")
loc_11074422: call MSVBVM60.DLL.__vbaPut4(00000000h, 0, 00000001h, FreeFile(""C))
loc_1107442F: Close FreeFile(""C, edi)
loc_11074432: Close FreeFile(""C)
loc_11074439: GoTo loc_11074458
loc_11074457: Exit Sub
loc_11074458: 'Referenced from 11074439
loc_11074476: Exit Sub
loc_11074493: Exit Sub
loc_11074496: 'Referenced from 1074346
loc_11074496: call MSVBVM60.DLL.__vbaErrorOverflow
End Sub



Public Sub Decrypt(vstrEncryptedZipFilePath, vstrFinalZipFilePath) '110744A0
loc_110744C2: var_8 = 11001E60h
loc_110744FB: call MSVBVM60.DLL.__vbaStrCopy(edi, 11001210h, arg_8)
loc_11074503: call MSVBVM60.DLL.__vbaStrCopy
loc_1107450D: var_64 = ""
loc_11074522: var_3C = Dir(&H4008)
loc_11074539: neg esi
loc_1107453B: sbb esi, esi
loc_1107453D: neg esi
loc_1107453F: neg esi
If (var_3C = 1100B7A8h) <> edi Then
loc_11074553: var_64 = ""
loc_1107455D: Kill &H4008
End If
loc_1107456D: var_44 = 80020004h
loc_11074574: var_4C = 10
loc_1107458B: var_44 = 80020004h
loc_110745A2: FreeFile(""C) = FreeFile(""C) + 0001h
If Err.Number <> 0 Then GoTo loc_110746F6
loc_110745BB: call Open #(00000020h, FFFFFFFFh, FreeFile(""C, edi), "")
loc_110745CA: call Open #(00000020h, FFFFFFFFh, FreeFile(""C), "")
loc_110745E5: var_44 = Chr$(00000000h)
loc_110745F1: var_4C = 8
loc_110745F8: var_5C = @String(LOF(FreeFile(""C, edi)))
loc_11074602: call MSVBVM60.DLL.__vbaStrVarMove(var_5C, ""C)
loc_1107460D: var_24 = MSVBVM60.DLL.__vbaStrVarMove(var_5C, ""C)
loc_1107462F: call Get #(00000000h, var_24, 00000001h, FreeFile(""C, edi))
loc_1107463D: var_64 = var_24
loc_11074644: var_6C = 8
loc_11074663: call frmMain.SetPropA("")
loc_11074682: call MSVBVM60.DLL.__vbaPut4(00000000h, 0, 00000001h, FreeFile(""C))
loc_1107468F: Close FreeFile(""C, edi)
loc_11074692: Close FreeFile(""C)
loc_11074699: GoTo loc_110746B8
loc_110746B7: Exit Sub
loc_110746B8: 'Referenced from 11074699
loc_110746D6: Exit Sub
loc_110746F3: Exit Sub
loc_110746F6: 'Referenced from 10745A6
loc_110746F6: call MSVBVM60.DLL.__vbaErrorOverflow
End Sub





Private sub Unknown_11074700
loc_11074725: var_8 = 11001E70h
loc_11074762: call MSVBVM60.DLL.__vbaNew(11002C88h, edi, esi, ebx)
loc_1107477B: call MSVBVM60.DLL.__vbaStrCopy("", MSVBVM60.DLL.__vbaNew(11002C88h, edi, esi, ebx))
loc_1107478B: frmMain.PropBag.WriteProperty("", %x2, %x3)
loc_110747C2: var_70 = &H3180
loc_110747C5: var_78 = &H8002
loc_110747CC: var_58 = @Len("")
loc_110747D3: call MSVBVM60.DLL.__vbaVarTstGt(var_78, var_58)
If MSVBVM60.DLL.__vbaVarTstGt(var_78, var_58) <> 0 Then
loc_110747F0: var_50 = &H3180
loc_11074812: var_48 = Mid$(@CStr(""), 00000001h, 2)
loc_1107481E: frmMain.var_48 = Forms
loc_11074862: var_58 = @Len("")
loc_1107486B: var_40 = @CLng(%x2)
loc_1107486E: GoTo loc_1107488F
End If
loc_1107487D: var_58 = @Len("")
loc_1107488F: 'Referenced from 1107486E
If 00000001h <= @CLng(%x2) Then
loc_110748B1: var_50 = 1
loc_110748C1: var_68 = @Mid$("", 00000001h, 2)
loc_110748CB: call MSVBVM60.DLL.__vbaStrVarMove(var_68)
loc_110748FF: var_78 = 3
loc_11074904: movsx eax, ax
loc_1107490C: var_70 = Asc(MSVBVM60.DLL.__vbaStrVarMove(var_68))
loc_1107491C: frmMain.var_7C = Forms
loc_11074927: var_58 = @Chr("")
loc_11074931: call MSVBVM60.DLL.__vbaStrVarMove(var_58)
loc_1107493E: var_44 = MSVBVM60.DLL.__vbaStrVarMove(var_58)
loc_1107494A: frmMain.var_44 = Forms
loc_1107497F: 00000001h = 00000001h + 1
If Err.Number <> 0 Then GoTo loc_11074A36
loc_11074987: var_3C = 1
loc_1107498A: GoTo loc_1107489D
End If
loc_11074999: call frmMain.SetPropA("")
loc_110749C1: var_34 = 0
loc_110749C8: GoTo loc_110749FD
If byte ptr var_4 <> 0 Then
End If
loc_110749FC: Exit Sub
loc_110749FD: 'Referenced from 110749C8
loc_11074A18: Exit Sub
loc_11074A33: Exit Sub
loc_11074A36: 'Referenced from 1074981
loc_11074A36: call MSVBVM60.DLL.__vbaErrorOverflow
End Sub




Private sub Unknown_11074A40
loc_11074A62: var_4 = 11001E80h
loc_11074A7A:
loc_11074A8C: var_3C = &HFF
loc_11074A93: var_44 = 2
loc_11074A9A: call Xor("", var_44, "", edi, esi, ebx)
loc_11074AA1: Xor("", var_44, "", edi, esi, ebx) = @CLng(%x2)
loc_11074AA7: var_24 = Xor("", var_44, "", edi, esi, ebx)
loc_11074AAF: GoTo loc_11074ABB
loc_11074ABA: Exit Sub
loc_11074ABB: 'Referenced from 11074AAF
loc_11074AC4: Exit Sub
End Sub




P.S. Powered by VB Decompiler Pro v5.0


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


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

Создано: 16 июня 2008 21:04 · Поправил: AVE New!
Цитата · Личное сообщение · #11

Jupiter Ну как ты думаешь я ее декомпилил?

Тока у мну немного подругому, видимо потому что Lite версия.

Подскажите, когда я эту ддл-ку пытаюсь в олю засунуть пишет
Module LOADDLL has empty code section
Как это исправить?.

Еще актуально


Ранг: 598.5 (!)
Статус: Модератор
Research & Development

Создано: 16 июня 2008 21:31 New!
Цитата · Личное сообщение · #12

AVE пишет:
Ну как ты думаешь я ее декомпилил?


я думаю ты увидишь разницу в коде между лайт и про версией ;)
даже если просто сравнить ф-ции, выложеные тобой и мной


AVE пишет:
Тока у мну немного подругому, видимо потому что Lite версия.


видимо ;)

кста прога скомпилена в натив, в случае с пикодом, дизасм был бы более полным



AVE пишет:
Подскажите, когда я эту ддл-ку пытаюсь в олю засунуть пишет
Module LOADDLL has empty code section



у меня OllyDbg грузит длл AddInSupport.dll без проблем.
проверь файл loaddll.exe в папке с OllyDbg
loaddll.exe EEB87B64


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

Создано: 16 июня 2008 21:39 New!
Цитата · Личное сообщение · #13

Jupiter пишет:
AVE пишет:
Подскажите, когда я эту ддл-ку пытаюсь в олю засунуть пишет
Module LOADDLL has empty code section


у меня OllyDbg грузит длл AddInSupport.dll без проблем.
проверь файл loaddll.exe в папке с OllyDbg
loaddll.exe EEB87B64


Это видимо из за сборки. взял другую ольку все нармально. и loaddll.exe одинаковые.


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

Создано: 16 июня 2008 21:39 New!
Цитата · Личное сообщение · #14

Ну так что мне делать с раскриптовкой?


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

Создано: 17 июня 2008 11:26 New!
Цитата · Личное сообщение · #15

Все еще актуально. меня смущают всякие бейсиковые vbaErrorOverflow, vbaStrVarMove, vbaPut4 и.д.


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

Создано: 23 июня 2008 13:11 New!
Цитата · Личное сообщение · #16

AVE, раскодил файлики? Если еще нет, залей на рапиду порогу и часть базы, попробую ее анпакнуть... Тебе, надеюсь, ее снова паковать в исходное состояние не нужно?


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

Создано: 23 июня 2008 15:39 New!
Цитата · Личное сообщение · #17

KingSise? не раскодил.

Один из файлов базы в первом посте, а прога вот же slil.ru/25901608.


KingSise пишет:
Тебе, надеюсь, ее снова паковать в исходное состояние не нужно?


Нет не надо


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

Создано: 23 июня 2008 16:15 New!
Цитата · Личное сообщение · #18

AVE, у меня на сллил.ру скорость 0.01 Кб/с
Перезалей на нормальный обменник...


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

Создано: 23 июня 2008 16:46 · Поправил: inf1kek New!
Цитата · Личное сообщение · #19

KingSise www.sendspace.com/file/hq4bh5


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

Создано: 25 июня 2008 11:57 · Поправил: AVE New!
Цитата · Личное сообщение · #20

Собственно вот что это за базы
www.exhedra.com/Exhedra/PlanetSourceCode/Download.aspx
 eXeL@B —› Основной форум —› Декриптовать видоизменненый zip-файл

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

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