Посл.ответ |
Сообщение |
Ранг: 6.2 (гость) Активность: 0=0 Статус: Участник
|
Создано: 12 декабря 2007 14:28 · Личное сообщение · #1
Я прикладной программист, хотя душа всегда тяготела к системным вещам. Давно мечтал научиться анализировать софт. Несколько лет назад перед мной встал SoftIce как самый крутой отладчик. Я решил его изучать, но нормальной инфы найти не удалось, после чего я это дело забросил. Недавно я наткнулся на цикл интересных статей www.wasm.ru/series.php?sid=17 прочитал их, разобрался с примерами и OllyDebug стал моим отладчиком на веке. Давно было желание проанализировать программу Back2Life v2.1, и вот настал день, когда я захотел сделать это с помощью OllyDebug, начал выполнять по той же методике как это было в примерах www.wasm.ru/series.php?sid=17, но к сожалению ничего неполучается, поэтому я решил обратиться к ВАМ профессионалам, может кто-нибудь возмется со мной вместе пошагово разобраться в ее скрытии. Для ВАС это же пустяковое дело, а мне хочется научится.
P.S. Помагите пожалуйста. А то спать начами не смогу. 0350_12.12.2007_CRACKLAB.rU.tgz - Back2Lifev2.1.rar
| Сообщение посчитали полезным: |
|
Ранг: 495.3 (мудрец) Активность: 0.3↘0 Статус: Участник
|
Создано: 13 декабря 2007 16:35 · Личное сообщение · #2
Весело . Гляну на досуге.
----- Всем привет, я вернулся | Сообщение посчитали полезным: |
Ранг: 85.5 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 13 декабря 2007 16:47 · Поправил: DMD · Личное сообщение · #3
Во избежание путаницы и недоразумений, предлагаю смотреть версию 2.2
--> берем здесь <-- http://rapidshare.com/files/76283669/Back2Life_2.2_.zip.html .... если найдутся любители...
там все почти все без изменений.. только upx добавился для усиления эффекта
ps/
релиз от dT присутсвует в ослике
| Сообщение посчитали полезным: |
Ранг: 105.9 (ветеран), 1thx Активность: 0.09↘0 Статус: Участник
|
Создано: 13 декабря 2007 17:31 · Поправил: Sturgeon · Личное сообщение · #4
DMD пишет:
предлагаю смотреть версию 2.2
Вы это, типа...
Когда посмотрите, статью напишите.
Я вот тоже глянул прогу, а сделать ничего не смог. Вроде все и на виду, а хрен чего получается. Уровень пока низковат.
| Сообщение посчитали полезным: |
Ранг: 6.2 (гость) Активность: 0=0 Статус: Участник
|
Создано: 13 декабря 2007 18:44 · Поправил: Delphist · Личное сообщение · #5
DMD пишет:
dREAM TEAM, конечно, молодцы
Что такое dREAM TEAM?
DMD пишет:
предлагаю смотреть версию 2.2
--> берем здесь <-- .... если найдутся любители
А почему 2.2 чем 2.1 не устроил
Sturgeon пишет:
Вроде все и на виду,
Да... уж. Вы профессионалы, и то возникли сложности, а говорили ерунда.
Автор Back2Life оказался не совсем дуроком.
| Сообщение посчитали полезным: |
Ранг: 495.3 (мудрец) Активность: 0.3↘0 Статус: Участник
|
Создано: 13 декабря 2007 19:24 · Личное сообщение · #6
Delphist пишет:
Автор Back2Life оказался не совсем дуроком.
Как говорится: сам себя не похвалишь - вылетишь не поймаешь.
----- Всем привет, я вернулся | Сообщение посчитали полезным: |
Ранг: 61.7 (постоянный), 12thx Активность: 0.09↘0.02 Статус: Участник
|
Создано: 13 декабря 2007 19:28 · Личное сообщение · #7
Delphist
dREAM TEAM - крэкерская команда
2.2- смысла больше отламывать защиту у более свежей версии.
DMD пишет:
там все почти все без изменений.
Вот одно, которое бросается в глаза - отсутствие ключей RegKey и UserName в реестре, видимо , прога не пишет их значения, если не валидны (UserName, думаю, можно отбросить).
UPX -это ради прикола, наверное...
| Сообщение посчитали полезным: |
Ранг: 216.9 (наставник), 85thx Активность: 0.31↘0.15 Статус: Участник X-Literator
|
Создано: 13 декабря 2007 23:27 · Личное сообщение · #8
Sturgeon пишет:
Вы это, типа...
Когда посмотрите, статью напишите.
Действительно крипто. Ниасилил ))
Кто сможет - напишите, плз. Что-то мне подсказывает, что дело не в вычислительных мощностях, как тут писали
----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. | Сообщение посчитали полезным: |
Ранг: 61.7 (постоянный), 12thx Активность: 0.09↘0.02 Статус: Участник
|
Создано: 14 декабря 2007 00:21 · Личное сообщение · #9
Gerpes пишет:
(UserName, думаю, можно отбросить). - ни хрена нельзя- при попытке подсунуть проге ключ старой версии, она начинает читать его, и номер - только вот потом что с ними делает- разобраться также не смог,... Статейку бы не помешала, конечно...
| Сообщение посчитали полезным: |
Ранг: 495.3 (мудрец) Активность: 0.3↘0 Статус: Участник
|
Создано: 14 декабря 2007 09:04 · Личное сообщение · #10
Несмотря на то, что АВТОР откровенно издевается над теми, кого ОН называет "ВАМ профессионалам", топик возвращается в основной раздел.
----- Всем привет, я вернулся | Сообщение посчитали полезным: |
Ранг: 247.7 (наставник), 3thx Активность: 0.16↘0 Статус: Участник Халявщик
|
Создано: 14 декабря 2007 09:58 · Личное сообщение · #11
как то копал эту прогу только в виде плагина к тоталу. сначала взял версию 2.4 - так ниче и нашел потом взял 2.3, к которой был серийник - оказалось что ф-и проверки ключа выглядят по разному в зависимости от валидности ключа.
----- Лень - это подсознательная мудрость | Сообщение посчитали полезным: |
Ранг: 6.2 (гость) Активность: 0=0 Статус: Участник
|
Создано: 14 декабря 2007 10:00 · Личное сообщение · #12
Gerpes пишет:
Несмотря на то, что АВТОР откровенно издевается над теми, кого ОН называет "ВАМ профессионалам", топик возвращается в основной раздел
Back2Life - это не моя прога. Я написал "ВАМ профессионалам" потому-что в начале топика писали, что мол я обратился с детским лепетом, и даже тему переместили в раздел "Для новичков".
| Сообщение посчитали полезным: |
Ранг: 61.7 (постоянный), 12thx Активность: 0.09↘0.02 Статус: Участник
|
Создано: 14 декабря 2007 16:59 · Личное сообщение · #13
Сенку за поднятое после бессонной ночи настроение - глюк кого-то или чего-то на миг сделал меня модератором (сорри за оффтоп)
Delphist пишет:
Back2Life - это не моя прога -Никто в это не верит, потому что
Delphist пишет:
Понимание взлома CrackMe и им подобные при изучении статей для меня не составляло труда
И при этом ни одного слова о попытках исследования, поиска адресов, ключах реестра? - это даже не странно, это скорее очевидно.
| Сообщение посчитали полезным: |
Ранг: 6.2 (гость) Активность: 0=0 Статус: Участник
|
Создано: 14 декабря 2007 17:05 · Личное сообщение · #14
Gerpes пишет:
Back2Life - это не моя прога -Никто в это не верит, потому что
Клянусь не моя прога, я Delphist - программер на Delphi. Настоящий автор Alex Mokrov, какой у него ник я не знаю. Я прикладной программер. Сам по суди был бы я настоящим автором, нафига мне на этом форуме вертиться, скажешь проверить надежность проги, тогда бы я проверял самую последнюю версию.
Ещё раз повторю автор не я.
| Сообщение посчитали полезным: |
Ранг: 495.3 (мудрец) Активность: 0.3↘0 Статус: Участник
|
Создано: 14 декабря 2007 21:38 · Личное сообщение · #15
Gerpes пишет:
Никто в это не верит
-1
Я поверил сразу, как только человек об этом сказал (о чём и написал с извинениями в личку, надеюсь Delphist прочёл).
Флуда попрошу не разводить, итак на две страницы накатали.
----- Всем привет, я вернулся | Сообщение посчитали полезным: |
Ранг: 1131.7 (!!!!), 447thx Активность: 0.67↘0.2 Статус: Участник
|
Создано: 15 декабря 2007 03:25 · Личное сообщение · #16
Хороший кракер должен быть хорошим аналитиком.
1) Программа уже давно взломана и зарелизина.
2) Исследовать просят не самую свежую версию.
С учётом вышесказанного можно считать, что Delphist - не автор.
Однако лично я бы помогать не стал, так как если топик о помощи в исследовании, то надо бы выложить свои наработки, а их нет. Значит банальный запрос на взлом.
| Сообщение посчитали полезным: |
Ранг: 329.6 (мудрец), 192thx Активность: 0.14↘0.01 Статус: Участник
|
Создано: 15 декабря 2007 10:24 · Личное сообщение · #17
Delphist
На сайте ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/901-1000/ имеется прекрасная подборка статей Guillermo под общим названием "Cazando Seriales". Guillermo уже написал 17 статей по поиску регистрационного кода для разных программ. Эти статьи расчитаны на новичков, и, на мой взгляд, очень неплохо написаны. Один недостаток - они написаны на испанском языке, но, с помощью переводчика PROMT6, их можно прочитать, тем более, что они снабжены хорошим графическим материалом.
| Сообщение посчитали полезным: |
Ранг: 1045.7 (!!!!), 31thx Активность: 0.57↘0 Статус: Участник
|
Создано: 15 декабря 2007 12:15 · Поправил: pavka · Личное сообщение · #18
del
| Сообщение посчитали полезным: |
Ранг: 495.3 (мудрец) Активность: 0.3↘0 Статус: Участник
|
Создано: 15 декабря 2007 12:25 · Личное сообщение · #19
Bitfry пишет:
Флуда попрошу не разводить, итак на две страницы накатали.
Раскрываю значение слова флуд:
пост не содержащий информации по сабжу*.
Сабж equ реверс Back2Lifev с целью пройти(обойти) защиту.
Кто не хочет помогать - не пишите вообще.
Кто не достиг определённого успеха по сабжу - не пишите вообще.
Дальше буду удалять жестко.
----- Всем привет, я вернулся | Сообщение посчитали полезным: |
Ранг: 85.5 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 17 декабря 2007 10:03 · Поправил: DMD · Личное сообщение · #20
Gideon Vi пишет:
Хороший кракер должен быть хорошим аналитиком.
...
Значит банальный запрос на взлом.
В этом случает ответ будет предельно краток и банален: посылаем в помощь топикстартеру ослика и он самостоятельно ищет релиз от dT..
тем более, что топикстартер спрашивал не лекарство.
Gerpes пишет:
Вот одно, которое бросается в глаза - отсутствие ключей RegKey и UserName в реестре, видимо , прога не пишет их значения, если не валидны (UserName, думаю, можно отбросить).
не стоит:
004099DD |. E8 CE1E0000 CALL 0040B8B0 ; >> Read Registry
.
.
>>
0040BA22 |> 8D4D FC LEA ECX, DWORD PTR [EBP-4]
0040BA25 |. BA 70BB4000 MOV EDX, 0040BB70 ; ASCII "UserName"
0040BA2A |. 8BC3 MOV EAX, EBX
0040BA2C |. E8 FFB00000 CALL 00416B30 ; >>
0040BA31 |. 8B55 FC MOV EDX, DWORD PTR [EBP-4]
0040BA34 |. A1 7CB64100 MOV EAX, DWORD PTR [41B67C]
0040BA39 |. E8 2277FFFF CALL 00403160
0040BA3E |. 8D4D FC LEA ECX, DWORD PTR [EBP-4]
0040BA41 |. BA 84BB4000 MOV EDX, 0040BB84 ; ASCII "RegKey"
0040BA46 |. 8BC3 MOV EAX, EBX
0040BA48 |. E8 E3B00000 CALL 00416B30 ; >>
<<
.
.
00409BD5 |. E8 0EB6FFFF CALL <JMP.&user32.ShowWindow> ; \ShowWindow
stack
0012FF5C 001F024C |hWnd = 001F024C ('Back2Life 2.2 [xxxxxx]',class='_Back2Life')
и еще
[HKEY_CURRENT_USER\Software\Back2Life\2.2]
"UserName"="xxxxxx"
"RegKey"="****************************************************"
как и прежде, обращение к реестру двойное: первый раз с буфером = NULL, второй раз уже действительно читаем.
Пока ясно только одно:
004099DD - считали из реестра RegKey и UserName
00409BD5 - уже есть четкое определение "unregistered" or "registered".
=> наша цель понять что происходит между двумя этими точками. и найти процедуру анализа.
Процедур на этом пути не очень много.. апи - просто пропускаем.
Тут же есть уже всем, наверное, знакомая:
00409AEF |. E8 64810000 CALL 00411C58 ; >>
>>
00411C58 /$ 53 PUSH EBX
00411C59 |. 56 PUSH ESI
00411C5A |. 57 PUSH EDI
00411C5B |. 83C4 E4 ADD ESP, -1C
00411C5E |. BB 781B4100 MOV EBX, 00411B78 ; Entry address
00411C63 |. 891C24 MOV DWORD PTR [ESP], EBX
00411C66 |. B8 0CCB4100 MOV EAX, 0041CB0C
00411C6B |. 33C9 XOR ECX, ECX
00411C6D |. BA 0A000000 MOV EDX, 0A
00411C72 |. E8 A90AFFFF CALL 00402720
00411C77 |. B8 581C4100 MOV EAX, 00411C58 ; Entry address
00411C7C |. 2BC3 SUB EAX, EBX
00411C7E |. 48 DEC EAX
00411C7F |. 894424 04 MOV DWORD PTR [ESP+4], EAX
00411C83 |. B9 0CCB4100 MOV ECX, 0041CB0C
00411C88 |. B8 781B4100 MOV EAX, 00411B78 ; Entry address
00411C8D |. 8B5424 04 MOV EDX, DWORD PTR [ESP+4]
00411C91 |. E8 56FBFFFF CALL 004117EC
00411C96 |. 8B05 0CCB4100 MOV EAX, DWORD PTR [41CB0C]
00411C9C |. 894424 0C MOV DWORD PTR [ESP+C], EAX
00411CA0 |. 8B05 10CB4100 MOV EAX, DWORD PTR [41CB10]
00411CA6 |. 894424 10 MOV DWORD PTR [ESP+10], EAX
00411CAA |. 66:8B05 14CB4100 MOV AX, WORD PTR [41CB14]
00411CB1 |. 66:894424 14 MOV WORD PTR [ESP+14], AX
00411CB6 |. 33DB XOR EBX, EBX
00411CB8 |. A1 7CB64100 MOV EAX, DWORD PTR [41B67C]
00411CBD |. 8B00 MOV EAX, DWORD PTR [EAX]
00411CBF |. E8 6416FFFF CALL 00403328
00411CC4 |. 85C0 TEST EAX, EAX
00411CC6 |. 7E 50 JLE SHORT 00411D18
00411CC8 |. 894424 18 MOV DWORD PTR [ESP+18], EAX
00411CCC |. C74424 08 01000000 MOV DWORD PTR [ESP+8], 1
00411CD4 |> A1 94B64100 /MOV EAX, DWORD PTR [41B694]
00411CD9 |. 8B00 |MOV EAX, DWORD PTR [EAX]
00411CDB |. E8 4816FFFF |CALL 00403328
00411CE0 |. 8BF8 |MOV EDI, EAX
00411CE2 |. 85FF |TEST EDI, EDI
00411CE4 |. 7E 28 |JLE SHORT 00411D0E
00411CE6 |. BE 01000000 |MOV ESI, 1
00411CEB |> 43 |/INC EBX
00411CEC |. 8A4C1C 0B ||MOV CL, BYTE PTR [ESP+EBX+B]
00411CF0 |. 33C0 ||XOR EAX, EAX
00411CF2 |. 8AC1 ||MOV AL, CL
00411CF4 |. 99 ||CDQ
00411CF5 |. F7FE ||IDIV ESI
00411CF7 |. 8A4424 08 ||MOV AL, BYTE PTR [ESP+8]
00411CFB |. 32C1 ||XOR AL, CL
00411CFD |. 0AD0 ||OR DL, AL
00411CFF |. 88541C 0B ||MOV BYTE PTR [ESP+EBX+B], DL
00411D03 |. 83FB 0A ||CMP EBX, 0A
00411D06 |. 75 02 ||JNZ SHORT 00411D0A
00411D08 |. 33DB ||XOR EBX, EBX
00411D0A |> 46 ||INC ESI
00411D0B |. 4F ||DEC EDI
00411D0C |.^75 DD |\JNZ SHORT 00411CEB
00411D0E |> FF4424 08 |INC DWORD PTR [ESP+8]
00411D12 |. FF4C24 18 |DEC DWORD PTR [ESP+18]
00411D16 |.^75 BC \JNZ SHORT 00411CD4
00411D18 |> 8D5424 0C LEA EDX, DWORD PTR [ESP+C]
00411D1C |. A1 94B64100 MOV EAX, DWORD PTR [41B694]
00411D21 |. 8B00 MOV EAX, DWORD PTR [EAX]
00411D23 |. E8 ACF4FFFF CALL 004111D4
00411D28 |. 8D4C24 0C LEA ECX, DWORD PTR [ESP+C]
00411D2C |. B8 781B4100 MOV EAX, 00411B78 ; Entry address
00411D31 |. 8B5424 04 MOV EDX, DWORD PTR [ESP+4]
00411D35 |. E8 B2FAFFFF CALL 004117EC
00411D3A |. 6A 0A PUSH 0A
00411D3C |. 6A 00 PUSH 0
00411D3E |. 8B4C24 0C MOV ECX, DWORD PTR [ESP+C]
00411D42 |. BA 681D4100 MOV EDX, 00411D68 ; ASCII "KEY-122-58"
00411D47 |. 8B4424 08 MOV EAX, DWORD PTR [ESP+8]
00411D4B |. E8 F0560000 CALL 00417440
00411D50 |. 84C0 TEST AL, AL
00411D52 |. 74 05 JE SHORT 00411D59
00411D54 |. E8 1FFEFFFF CALL 00411B78
00411D59 |> 83C4 1C ADD ESP, 1C
00411D5C |. 5F POP EDI
00411D5D |. 5E POP ESI
00411D5E |. 5B POP EBX
00411D5F \. C3 RETN
00411D60 . FFFFFFFF DD FFFFFFFF
00411D64 . 0A000000 DD 0000000A
00411D68 . 4B 45 59 2D 31 32 32 2D >ASCII "KEY-122-58",0
но мы уже знаем, что
00411D4B |. E8 F0560000 CALL 00417440
00411D50 |. 84C0 TEST AL, AL
есть обманка.. но присутствуют и другие процедуры. Вполне возможна маскировка в мимикрии.
Так что, основная линия, вообщем, понятна.. остальное зависит от желания, терпения и усидчивости..
может быть, и немного везения не помешает,,
Delphist пишет:
Вы профессионалы, и то возникли сложности, а говорили ерунда.
Автор Back2Life оказался не совсем дуроком.
Будем считать, что все, кто погорячился с первого взгляда на таргет, уже покаялись...
тем более, что аффтора никто придурком не называл,,,
| Сообщение посчитали полезным: |
Ранг: 38.3 (посетитель) Активность: 0.02↘0 Статус: Участник
|
Создано: 18 декабря 2007 03:31 · Личное сообщение · #21
С миру - по нитке, будет рубаха.((с) кто-то там)
0041339E |. 50 PUSH EAX ; /Count
0041339F |. 57 PUSH EDI ; |Buffer
004133A0 |. 53 PUSH EBX ; |hWnd
004133A1 |. E8 2A1DFFFF CALL <JMP.&user32.GetWindowTextA> ; \GetWindowTextA
считываем введённый рег.код
...
00413402 |. 8B45 F8 MOV EAX,[LOCAL.2]
00413405 |. BA 84354100 MOV EDX,00413584 ; ASCII "Back2Life 2.2 (2225)"
0041340A |. E8 2900FFFF CALL 00403438 проверка первой части кея на соответствие [Back2Life 2.2 (2225)]
0041340F |. 0F85 2C010000 JNZ 00413541 если не равно, то на выход
00413415 |. 55 PUSH EBP ; /Arg1
00413416 |. 8D45 F8 LEA EAX,[LOCAL.2] ; |
00413419 |. E8 96FEFFFF CALL 004132B4 ; проверка второй части кея на соответствие [xxxxxx]
0041341E |. 59 POP ECX
0041341F |. 84C0 TEST AL,AL
00413421 |. 0F84 1A010000 JE 00413541
00413427 |. 837D F8 00 CMP [LOCAL.2],0
0041342B |. 0F84 10010000 JE 00413541
00413431 |. 55 PUSH EBP ; /Arg1
00413432 |. 8D45 F8 LEA EAX,[LOCAL.2] ; |
00413435 |. E8 7AFEFFFF CALL 004132B4 ; проверка третьей части кея на соответствие [xxxxxx]
0041343A |. 59 POP ECX
0041343B |. 84C0 TEST AL,AL
0041343D |. 0F84 FE000000 JE 00413541
00413443 |. 55 PUSH EBP ; /Arg1
00413444 |. 8D45 F4 LEA EAX,[LOCAL.3] ; |
00413447 |. E8 68FEFFFF CALL 004132B4 ; проверка четвертой части кея на соответствие [xxxxx]
...
если всё ОК, то запишем данные в реестр, в ветку HKEY_CURRENT_USER\Software\Back2Life\2.2
...
00413507 |> \BA A4354100 MOV EDX,004135A4 ; ASCII "Software\Back2Life\2.2"
0041350C |. B8 01000080 MOV EAX,80000001
00413511 |. E8 DA29FFFF CALL 00405EF0
...
Получается, что ключеГ имеет вид:
[Back2Life 2.2 (2225)]
[xxxxxxx]
[xxxxxxx]
[xxxxxxx]
Cтатична только первая часть ключа.
Причём в реестр сохраняется только вторая и четвёртая части ключа. Вторая это UserName, четвёртая - RegKey.
RegKey и есть походу КрИпТо.
Далее при загрузке ститываем (0040B8B0) данные из реестра, в том числе и настройки программы.
Подготавливаемся к проверке валидности рег. кея (тут особо не копал),
связано ли это нагромождение кода с подготовкой к проверке хз, выглядит странно:
...
00409A3D |. A1 A8B64100 MOV EAX,DWORD PTR DS:[41B6A8]
00409A42 |. C640 08 01 MOV BYTE PTR DS:[EAX+8],1
00409A46 |. B8 E81A4100 MOV EAX,00411AE8
00409A4B |. 8B15 70B64100 MOV EDX,DWORD PTR DS:[41B670] ; Back2Lif.0041C8D0
00409A51 |. 8902 MOV DWORD PTR DS:[EDX],EAX
00409A53 |. 68 14C94100 PUSH 0041C914 ; pLocaltime = Back2Lif.0041C914
00409A58 |. E8 DBB3FFFF CALL <JMP.&KERNEL32.GetLocalTime> ; GetLocalTime
00409A5D |. A1 A8B64100 MOV EAX,DWORD PTR DS:[41B6A8]
00409A62 |. 83C0 26 ADD EAX,26
00409A65 |. 50 PUSH EAX ; /Arg1
00409A66 |. 66:8B0D 1AC94>MOV CX,WORD PTR DS:[41C91A] ; |
00409A6D |. 66:8B15 16C94>MOV DX,WORD PTR DS:[41C916] ; |
00409A74 |. 66:A1 14C9410>MOV AX,WORD PTR DS:[41C914] ; |
00409A7A |. E8 B9D2FFFF CALL 00406D38 ; \Back2Lif.00406D38
00409A7F |. A1 A8B64100 MOV EAX,DWORD PTR DS:[41B6A8]
00409A84 |. 66:8B40 26 MOV AX,WORD PTR DS:[EAX+26]
00409A88 |. 8B15 A8B64100 MOV EDX,DWORD PTR DS:[41B6A8] ; Back2Lif.0041C854
00409A8E |. 66:8942 2C MOV WORD PTR DS:[EDX+2C],AX
00409A92 |. A1 A8B64100 MOV EAX,DWORD PTR DS:[41B6A8]
00409A97 |. 66:8B40 26 MOV AX,WORD PTR DS:[EAX+26]
00409A9B |. 8B15 A8B64100 MOV EDX,DWORD PTR DS:[41B6A8] ; Back2Lif.0041C854
00409AA1 |. 66:8942 32 MOV WORD PTR DS:[EDX+32],AX
00409AA5 |. A1 A8B64100 MOV EAX,DWORD PTR DS:[41B6A8]
00409AAA |. 66:8B40 24 MOV AX,WORD PTR DS:[EAX+24]
00409AAE |. 8B15 A8B64100 MOV EDX,DWORD PTR DS:[41B6A8] ; Back2Lif.0041C854
00409AB4 |. 66:8942 30 MOV WORD PTR DS:[EDX+30],AX
00409AB8 |. A1 A8B64100 MOV EAX,DWORD PTR DS:[41B6A8]
00409ABD |. 66:8B40 24 MOV AX,WORD PTR DS:[EAX+24]
00409AC1 |. 8B15 A8B64100 MOV EDX,DWORD PTR DS:[41B6A8] ; Back2Lif.0041C854
00409AC7 |. 66:8942 2A MOV WORD PTR DS:[EDX+2A],AX
00409ACB |. A1 A8B64100 MOV EAX,DWORD PTR DS:[41B6A8]
00409AD0 |. C640 35 02 MOV BYTE PTR DS:[EAX+35],2
00409AD4 |. A1 A8B64100 MOV EAX,DWORD PTR DS:[41B6A8]
00409AD9 |. C640 36 02 MOV BYTE PTR DS:[EAX+36],2
00409ADD |. A1 A8B64100 MOV EAX,DWORD PTR DS:[41B6A8]
00409AE2 |. C640 37 02 MOV BYTE PTR DS:[EAX+37],2
00409AE6 |. A1 A8B64100 MOV EAX,DWORD PTR DS:[41B6A8]
00409AEB |. C640 38 02 MOV BYTE PTR DS:[EAX+38],2
00409AEF |. E8 64810000 CALL 00411C58 <<< ПРОВЕРКА ТУТА
...
004117FE |. E8 15FBFFFF CALL 00411318
...
а тут вроде вызов RC2, хз как работает ))
В версии 2.5 всё это "дело" более ярко выражено, ИМХО.
Мож кто поделиться исходничками(delphi) с RC2 или нормальным описанием, как это дело работает, а то что-т чтение RFC не торкнуло, в инете ничего удобоваримого не нашёл, мож плохо искал.
| Сообщение посчитали полезным: |
Ранг: 42.1 (посетитель) Активность: 0.02↘0 Статус: Участник
|
Создано: 18 декабря 2007 04:43 · Личное сообщение · #22 |
Ранг: 38.3 (посетитель) Активность: 0.02↘0 Статус: Участник
|
Создано: 18 декабря 2007 05:56 · Личное сообщение · #23
Сенкс, я до этого скачал dcpcrypt2, но не торкнуло.
Реализация типо есть, терь ещё бы и понять, что реализуем )).
А нет что-т типо RFC, но попроще и на русском. (раскатал губу)
| Сообщение посчитали полезным: |
Ранг: 85.5 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 18 декабря 2007 09:31 · Личное сообщение · #24
4t пишет:
Реализация типо есть, терь ещё бы и понять, что реализуем )).
если все оказались правы и в таргете действительно RC2, то можно почитать вот это
--> Жмем тут <-- http://astu.secna.ru/russian/students/personal/54gmz&54_alex/alg_rc2.htm
| Сообщение посчитали полезным: |
Ранг: 85.5 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 18 декабря 2007 16:40 · Поправил: DMD · Личное сообщение · #25
4t пишет:
004117FE |. E8 15FBFFFF CALL 00411318
...
а тут вроде вызов RC2, хз как работает ))
мне кажется, что это только подготовительная процедура... или опять: использование не по назначению..
см. ниже
4t пишет:
00409AEF |. E8 64810000 CALL 00411C58 <<< ПРОВЕРКА ТУТА
не похоже...
я вынужден привести много кода и комментариев - возможно, это поможет понять суть происходящего:
00409AEF |. E8 64810000 CALL 00411C58 ; >>
- - -
>>
.
.
00411C91 |. E8 56FBFFFF CALL 004117EC ; >> (*)
.
.
00411CD4 |> A1 94B64100 /MOV EAX, DWORD PTR [41B694]
00411CD9 |. 8B00 |MOV EAX, DWORD PTR [EAX]
00411CDB |. E8 4816FFFF |CALL 00403328
00411CE0 |. 8BF8 |MOV EDI, EAX
00411CE2 |. 85FF |TEST EDI, EDI
00411CE4 |. 7E 28 |JLE SHORT 00411D0E
00411CE6 |. BE 01000000 |MOV ESI, 1
00411CEB |> 43 |/INC EBX
00411CEC |. 8A4C1C 0B ||MOV CL, BYTE PTR [ESP+EBX+B] ; RegKey
00411CF0 |. 33C0 ||XOR EAX, EAX
00411CF2 |. 8AC1 ||MOV AL, CL
00411CF4 |. 99 ||CDQ
00411CF5 |. F7FE ||IDIV ESI
00411CF7 |. 8A4424 08 ||MOV AL, BYTE PTR [ESP+8]
00411CFB |. 32C1 ||XOR AL, CL
00411CFD |. 0AD0 ||OR DL, AL
00411CFF |. 88541C 0B ||MOV BYTE PTR [ESP+EBX+B], DL
00411D03 |. 83FB 0A ||CMP EBX, 0A
00411D06 |. 75 02 ||JNZ SHORT 00411D0A
00411D08 |. 33DB ||XOR EBX, EBX
00411D0A |> 46 ||INC ESI
00411D0B |. 4F ||DEC EDI
00411D0C |.^75 DD |\JNZ SHORT 00411CEB
00411D0E |> FF4424 08 |INC DWORD PTR [ESP+8]
00411D12 |. FF4C24 18 |DEC DWORD PTR [ESP+18] ; RegKey lenght (0x34)
00411D16 |.^75 BC \JNZ SHORT 00411CD4
0012FF40 01 00 00 00 ; equ UserName lenght
0012FF40 79 91 D1 3A 04 B3 D0 02 C1 EA
rez
0012FF40 07 00 00 00
0012FF40 7F BB FF 3B 07 BF FD 07 FB FD
.
.
00411D23 |. E8 ACF4FFFF CALL 004111D4
RegKey "980A770637S4D40EEF0A4028BDE0EBDJ4222E9C0EC885A541457" ASCII -> HEX до первого non_digit_simbol
0012FF40 98 0A 77 06 37 00 00 00 00 00
.
.
00411D35 |. E8 B2FAFFFF CALL 004117EC ; >> (**)
rez
0012FF40 56 A2 63 42 C6 48 80 B5 3E 5B
* * *
>> (*)
004117EC /$ 53 PUSH EBX
004117ED |. 56 PUSH ESI
004117EE |. 57 PUSH EDI
004117EF |. 8BF1 MOV ESI, ECX
004117F1 |. 8BFA MOV EDI, EDX
004117F3 |. 8BD8 MOV EBX, EAX
004117F5 |. 8BC6 MOV EAX, ESI
004117F7 |. 33C9 XOR ECX, ECX
004117F9 |. BA 0A000000 MOV EDX, 0A
004117FE |. E8 15FBFFFF CALL 00411318 ; Get Table 0x80
; (0x0, 0x0, 0x0A)
0041CA80 D9 00 00 00 00 00 00 00 00 00 D9 16
0041CA90 53 1F A2 41 D6 A8 24 87 6F 52 51 F8 D0 7E 3B 1B
0041CAA0 82 E9 42 5A 50 73 93 7E 02 8B A0 AA B9 83 CF 65
0041CAB0 0A 84 EE C3 DA 80 95 62 8F E5 2E 3A 61 87 BF 82
0041CAC0 8E C5 3B 17 60 D0 8F 53 37 02 96 30 9B 3A D0 C2
0041CAD0 75 05 5C B6 A7 2C AE BB AC 43 FC 78 E1 74 88 23
0041CAE0 00 5B ED BD 02 D5 B4 61 48 9B 5E 02 2E 5F BF 5A
0041CAF0 D8 95 E2 66 E3 33 BF FB 36 96 43 63 60 92 EF 59
0041CB00 62 3C C7 3C
00411803 |. 56 PUSH ESI ; /Arg1 = 0041CB0C
00411804 |. 8BCF MOV ECX, EDI ; |
00411806 |. 8BD3 MOV EDX, EBX ; |
00411808 |. 8BC3 MOV EAX, EBX ; |
0041180A |. E8 EDFEFFFF CALL 004116FC ; \Back2Lif.004116FC
Base_Table - 411B78, 0x0A first bytes ( Table will be owewrite! )
00411B78 ED 3A 1A D2 71 58 6E F1 91 41 B2 80 07 52 B5 A0
00411B88 FA 11 F0 A1 48 69 F0 3A 04 E5 B5 D0 A8 36 70 97
00411B98 99 40 AD 03 8E A6 89 2C 7D CC BD B1 65 53 91 4F
00411BA8 EB 7E D9 70 DB 15 DD 0D 13 B6 22 49 9D 7D 23 1E
00411BB8 E2 6E 40 33 81 6C 25 D3 6B 42 2A 76 CC 62 6E 4C
00411BC8 0B DA 70 1E 05 6F C0 B5 4E 2E F9 C4 44 50 5E DF
00411BD8 D7 00 DE 49 32 8F 95 EF 9C C1 8F 71 7A D5 4C 79
00411BE8 6C 8D 8A 83 61 2A F6 6D 30 6D 60 05 69 28 C6 EE
00411BF8 04 28 CB 7C C8 F7 C3 00 24 82 A1 9C 91 A7 6D 5A
00411C08 C6 37 17 4C 7C 0D F8 E9 AB F0 24 B4 E7 9B 74 24
00411C18 83 64 A1 25 5F 68 E7 B0 6F 48 FD 39 13 18 A0 88
00411C28 85 45 FC 4F 13 E1 51 F7 7C E4 D8 FC B2 C6 2C 94
00411C38 EA ED B7 FD 33 EE E7 5C 5E B1 82 F7 97 F6 27 DF
00411C48 4C 51 EA 57 7C 93 E0 05 D6 8A D4 49 98 E0 F4 00
00411B70 ED 3A 1A D2 71 58 6E F1
00411B80 91 41
0041CB00 79 91 D1 3A
0041CB10 04 B3 D0 02 C1 EA
0041CB0C 79 91 D1 3A 04 B3 D0 02 C1 EA
0041180F |. E8 50030000 CALL 00411B64 ; clear memory block
00411814 |. 5F POP EDI
00411815 |. 5E POP ESI
00411816 |. 5B POP EBX
00411817 \. C3 RETN
<<
- - -
>> (**)
004117EC /$ 53 PUSH EBX
004117ED |. 56 PUSH ESI
004117EE |. 57 PUSH EDI
004117EF |. 8BF1 MOV ESI, ECX
004117F1 |. 8BFA MOV EDI, EDX
004117F3 |. 8BD8 MOV EBX, EAX
004117F5 |. 8BC6 MOV EAX, ESI
004117F7 |. 33C9 XOR ECX, ECX
004117F9 |. BA 0A000000 MOV EDX, 0A
004117FE |. E8 15FBFFFF CALL 00411318 ; >>
>>
.
.
0041134D |. 8BD3 MOV EDX, EBX
0041134F |. 83FA 7F CMP EDX, 7F
00411352 |. 7F 2B JG SHORT 0041137F
00411354 |. 8D4416 0F LEA EAX, DWORD PTR [ESI+EDX+F]
00411358 |> 8BCA /MOV ECX, EDX
0041135A |. 2BCB |SUB ECX, EBX
0041135C |. 0FB64C0E 10 |MOVZX ECX, BYTE PTR [ESI+ECX+10]
00411361 |. 0FB638 |MOVZX EDI, BYTE PTR [EAX]
00411364 |. 03CF |ADD ECX, EDI
00411366 |. 81E1 FF000000 |AND ECX, 0FF
0041136C |. 8A89 4CB54100 |MOV CL, BYTE PTR [ECX+41B54C]
00411372 |. 8848 01 |MOV BYTE PTR [EAX+1], CL
00411375 |. 42 |INC EDX
00411376 |. 40 |INC EAX
00411377 |. 81FA 80000000 |CMP EDX, 80
0041137D |.^75 D9 \JNZ SHORT 00411358
0041137F |> 33C0 XOR EAX, EAX
00411381 |. 8A46 10 MOV AL, BYTE PTR [ESI+10]
00411384 |. 8A80 4CB54100 MOV AL, BYTE PTR [EAX+41B54C]
0041138A |. 8846 10 MOV BYTE PTR [ESI+10], AL
tab (98 0A 77 06 37 00 00 00 00 00 , 0, 0X0A )
0041CA80 4B 0A 77 06 37 00 00 00 00 00 4B BE
0041CA90 B7 55 35 B7 7A D5 9E A4 2E B9 F8 8C 5D 2B 51 4F
0041CAA0 B1 BE B9 C7 31 55 3A 69 36 52 C4 EA 6E B7 BB C6
0041CAB0 D9 65 5E 99 3C 4F 55 4A DD 6E 1C E8 B2 14 12 BF
0041CAC0 2B EF 67 9E 36 FB F4 28 21 0D F0 A9 C6 46 C8 98
0041CAD0 35 3C 3C 56 B2 30 9C 34 FE 49 1E D4 C6 44 9C 67
0041CAE0 C4 0A 28 11 32 B5 2F F6 D2 95 3D 1C CE A9 3F E5
0041CAF0 2B 9A BC 75 3A E4 3A 1B D4 02 81 88 CE 93 6C 12
0041CB00 A7 FA BA 25
<<
00411803 |. 56 PUSH ESI ; /Arg1 = 0012FF44
00411804 |. 8BCF MOV ECX, EDI ; |
00411806 |. 8BD3 MOV EDX, EBX ; |
00411808 |. 8BC3 MOV EAX, EBX ; |
0041180A |. E8 EDFEFFFF CALL 004116FC ; \Back2Lif.004116FC
>>
before
00411B78 4F EF D7 41 58 E6 5C B3 5A 06 5A 18 C7 0B EE CA
00411B88 76 0C 72 EE 5E 53 31 00 3F DB 72 92 99 84 5E 42
00411B98 42 BE E0 B2 ED 58 31 F4 DF 38 A4 E5 BB 3F 59 47
00411BA8 4D CA F4 B2 0A 38 73 39 90 41 D6 13 60 6D 92 7E
00411BB8 68 D2 9A 67 FB E1 12 8D 44 46 F5 3D 42 DB 4B 71
00411BC8 F3 DE 78 46 92 69 7C E7 2C F9 A6 20 7E B7 C2 85
00411BD8 D6 6C 93 16 C9 A0 2A D6 C7 25 9A E4 36 DA 4A DA
00411BE8 AA 6D 29 7A 48 5E 5E 86 CA 28 3F E1 69 90 4A D1
00411BF8 DC 96 A7 50 D0 93 DA 96 78 AB 2A 9E 83 CA 38 91
00411C08 C9 CA 24 84 01 45 77 7C E8 15 2E 52 D0 49 72 A5
00411C18 0E 88 37 B8 6A BA 60 AE 3F 6C 98 B8 0E 8F 1C 98
00411C28 FD 7E E2 F1 96 AD AD EF DF 1F 93 9C A4 37 ED 94
00411C38 A2 2A E5 C9 B8 1C D6 35 CC B5 DE A6 0E A7 6D 9F
00411C48 2C 64 46 CF 80 9F 79 CE C2 EB D1 A3 26 D6 CC 00
| Сообщение посчитали полезным: |
Ранг: 85.5 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 18 декабря 2007 16:45 · Поправил: DMD · Личное сообщение · #26
все сразу не поместилось..
after
00411B78 18 18 71 45 F5 0C 57 15 BD A9 04 5B B2 8F 55 06
00411B88 40 C9 3B F6 25 B4 24 3A 27 50 91 74 F9 94 B0 FE
00411B98 1F EE 71 04 2D 98 DB 9C 65 6E CE 0A CF E7 5F D2
00411BA8 4B 6E 6C 5B 79 EF 05 6B A7 2F 52 FC 93 FA 01 50
00411BB8 73 D6 9B EF 90 AF 72 D8 65 E8 10 B5 62 FF C2 F5
00411BC8 70 1E 28 35 FB C1 08 52 5D 31 0F 1B 03 2B 4B 1C
00411BD8 F1 A7 A8 46 B5 6F C4 07 CE FA E6 8B 12 3D 04 D1
00411BE8 F1 2F 25 9F 93 BB 1B 54 3D 0E 39 D8 09 BA C2 00
00411BF8 35 0B 2B F3 B4 BD AF 59 BD 5C 1B 34 BE 46 05 64
00411C08 EC BF 23 0E F7 01 21 7E 04 CA 01 E3 13 9E CD 21
00411C18 C0 45 E8 A3 1F 96 82 66 84 42 D1 F0 44 4A 81 80
00411C28 82 73 1B 2B 51 CD 40 9B 14 AC E9 2D F1 61 7D 44
00411C38 68 8C B8 17 0A 36 31 E7 56 E8 8B F8 46 10 C6 65
00411C48 2F 48 A3 41 D3 2F E3 8A 87 DE F4 C0 46 85 BE 00
rez
0012FF40 56 A2 63 42 C6 48 80 B5 3E 5B
0041180F |. E8 50030000 CALL 00411B64
00411814 |. 5F POP EDI
00411815 |. 5E POP ESI
00411816 |. 5B POP EBX
00411817 \. C3 RETN
<<
* * *
в двух словах вот что происходит: через блоки данных, которые мы первоначально приняли за закриптованные процедуры (411B78), происходит раскрытие 0х80 байтного блока, из которого получается (условное название!) mini-key длиной 0х0А. в разных местах кол-во циклов - разное и зависит от длины UserName, длины RegKey и значения RegKey до первого не цифрового символа.
ок, получили mini-key. он лежит в стеке.. и вот что самое гнустное, перед
00411D59 |> 83C4 1C ADD ESP, 1C
00411D5C |. 5F POP EDI
00411D5D |. 5E POP ESI
00411D5E |. 5B POP EBX
00411D5F \. C3 RETN
вид стека
0012FF38 00411B78 Entry address
0012FF3C 000000DF
0012FF40 00000007
0012FF44 4263A256
0012FF48 B58048C6
0012FF4C 00025B3E
и вид сбоку
0012FF40 56 A2 63 42 C6 48 80 B5 3E 5B
это и есть mini-key
а на RET верхушка стека вот такая (естественно!)
0012FF60 00409AF4 RETURN to Back2Lif.00409AF4 from Back2Lif.00411C58
те. при выполнении следующих процедур эта область стека совершенно правильно и банально затирается чем нужно далее по коду...
единственное, что остается доступно - модифицированный блок 411B78. Нужен он далее или нет.. пока не понятно..
до
00409BA3 |. E8 707C0000 CALL 00411818
включительно, это блок не используется. Кстати, от считывания из реестра только в процедуре 00411818 используется RegName...
а дальше уже следуют:
00409BB1 |. 6A 03 PUSH 3 ; /ShowState = SW_SHOWMAXIMIZED
00409BB3 |. A1 24B74100 MOV EAX, DWORD PTR [41B724] ; |
00409BB8 |. 8B00 MOV EAX, DWORD PTR [EAX] ; |
00409BBA |. 50 PUSH EAX ; |hWnd
00409BBB |. E8 28B6FFFF CALL <JMP.&user32.ShowWindow> ; \ShowWindow
00409BC0 |. EB 3E JMP SHORT 00409C00
00409BC2 |> A1 34C94100 MOV EAX, DWORD PTR [41C934]
00409BC7 |. 85C0 TEST EAX, EAX
00409BC9 |. 75 11 JNZ SHORT 00409BDC
00409BCB |. 6A 01 PUSH 1 ; /ShowState = SW_SHOWNORMAL
00409BCD |. A1 24B74100 MOV EAX, DWORD PTR [41B724] ; |
00409BD2 |. 8B00 MOV EAX, DWORD PTR [EAX] ; |
00409BD4 |. 50 PUSH EAX ; |hWnd
00409BD5 |. E8 0EB6FFFF CALL <JMP.&user32.ShowWindow> ; \ShowWindow
00409BDA |. EB 24 JMP SHORT 00409C00
00409BDC |> 6A 40 PUSH 40 ; /Flags = SWP_SHOWWINDOW
00409BDE |. 50 PUSH EAX ; |Height
00409BDF |. A1 30C94100 MOV EAX, DWORD PTR [41C930] ; |
00409BE4 |. 50 PUSH EAX ; |Width => 23A (570.)
00409BE5 |. A1 2CC94100 MOV EAX, DWORD PTR [41C92C] ; |
00409BEA |. 50 PUSH EAX ; |Y => 50 (80.)
00409BEB |. A1 28C94100 MOV EAX, DWORD PTR [41C928] ; |
00409BF0 |. 50 PUSH EAX ; |X => 82 (130.)
00409BF1 |. 6A 00 PUSH 0 ; |InsertAfter = HWND_TOP
00409BF3 |. A1 24B74100 MOV EAX, DWORD PTR [41B724] ; |
00409BF8 |. 8B00 MOV EAX, DWORD PTR [EAX] ; |
00409BFA |. 50 PUSH EAX ; |hWnd
00409BFB |. E8 D8B5FFFF CALL <JMP.&user32.SetWindowPos> ; \SetWindowPos
где уже ясно - зарегистрирован таргет или нет...
Видно придется разбирать по косточкам процедуру 00411818..
ps/ а где, собственно, Delphist ?! кто помогать будет?! кто все это начал?!
| Сообщение посчитали полезным: |
Ранг: 38.3 (посетитель) Активность: 0.02↘0 Статус: Участник
|
Создано: 19 декабря 2007 01:10 · Личное сообщение · #27
DMD пишет:
если все оказались правы и в таргете действительно RC2, то можно почитать вот это
--> Жмем тут <--
Маловато будет. Нужно больше, я тугодуммм .
DMD пишет:
Видно придется разбирать по косточкам процедуру 00411818..
Придёться .
004117EC /$ PUSH EBX
004117ED |. PUSH ESI
004117EE |. PUSH EDI
004117EF |. MOV ESI,ECX
004117F1 |. MOV EDI,EDX
004117F3 |. MOV EBX,EAX
004117F5 |. MOV EAX,ESI
004117F7 |. XOR ECX,ECX
004117F9 |. MOV EDX,0A ; < размер ключа ?
004117FE |. CALL 00411318 ;InitKey
а сам ключ где ?
Это походу инициализация ключа (или как там).
00411318 /$ PUSH EBX
00411319 |. PUSH ESI
0041131A |. PUSH EDI
0041131B |. MOV EBX,EDX
0041131D |. MOV EDI,EAX
0041131F |. MOV ESI,0041CA74 ; 0041CA74+10h = указатель на буфер
00411324 |. MOV EAX,ESI ;arg = buf (EAX)
00411326 |. XOR ECX,ECX ;arg = Value (0)
00411328 |. MOV EDX,8 ;arg = count (8)
0041132D |. CALL 00402720 ; FillChar
00411332 |. LEA EAX,DWORD PTR DS:[ESI+8] ;arg = buf (EAX)
00411335 |. XOR ECX,ECX ;arg = Value (0)
00411337 |. MOV EDX,8 ;arg = count (8)
0041133C |. CALL 00402720 ; FillChar
00411341 |. LEA EDX,DWORD PTR DS:[ESI+10] ; arg = Dest(EDX)
00411344 |. MOV EAX,EDI ; arg = Source (EAX)
00411346 |. MOV ECX,EBX ; arg = Count (ECX)
00411348 |. CALL 00402618 ; Move
0041134D |. MOV EDX,EBX
0041134F |. CMP EDX,7F
00411352 |. JG SHORT 0041137F
00411354 |. LEA EAX,DWORD PTR DS:[ESI+EDX+F]
00411358 |> /MOV ECX,EDX ; цикл - расширение ключа к 128 байтам (вроде так)
0041135A |. |SUB ECX,EBX
0041135C |. |MOVZX ECX,BYTE PTR DS:[ESI+ECX+10]
00411361 |. |MOVZX EDI,BYTE PTR DS:[EAX]
00411364 |. |ADD ECX,EDI
00411366 |. |AND ECX,0FF
0041136C |. |MOV CL,BYTE PTR DS:[ECX+41B54C]
00411372 |. |MOV BYTE PTR DS:[EAX+1],CL
00411375 |. |INC EDX
00411376 |. |INC EAX
00411377 |. |CMP EDX,80
0041137D |.^ \JNZ SHORT 00411358
0041137F |> XOR EAX,EAX
00411381 |. MOV AL,BYTE PTR DS:[ESI+10]
00411384 |. MOV AL,BYTE PTR DS:[EAX+41B54C]
0041138A |. BYTE PTR DS:[ESI+10],AL
0041138D |. POP EDI
0041138E |. POP ESI
0041138F |. POP EBX
00411390 \. RET
примерный аналог(выдрано из dcpcrypt2):
procedure TDCP_rc2.InitKey(const Key; Size: longword);
var
i: longword;
KeyB: array[0..127] of byte;
begin
Move(Key,KeyB,Size div 8);
for i:= (Size div 8) to 127 do
KeyB[i]:= sBox[(KeyB[i-(Size div 8)]+KeyB[i-1]) and $FF];
KeyB[0]:= sBox[KeyB[0]];
Move(KeyB,KeyData,Sizeof(KeyData));
end;
Key - это наверное ключ, а Size - размер ключа ? .
М-да.
Что-то подсказывает, что я каши мало ел .
| Сообщение посчитали полезным: |
Ранг: 85.5 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 19 декабря 2007 10:18 · Поправил: DMD · Личное сообщение · #28
4t пишет:
004117F9 |. MOV EDX,0A ; < размер ключа ?
004117FE |. CALL 00411318 ;InitKey
а сам ключ где ?
Это походу инициализация ключа (или как там).
Да, похоже на инициализацию..
0х0А - это размер инициализирующей последовательности
в самом простом случае это : 00 00 00 00 00 00 00 00 00 00. и с помощью элементов таблицы 41B54C получаем все 0х80 байт.
( в процедуре 411818 инициализирующая последовательность - UserName )
потом в
0041180A |. E8 EDFEFFFF CALL 004116FC ; \Back2Lif.004116FC
из полученной таблицы получаем "свертку" размером 0х0А... (я ее условно mini-key обозвал).
0041180F |. E8 50030000 CALL 00411B64
очистили 0х80 таблицу...
вот тут-то и возникает самый интересный вопрос: с чем имеем дело? RC2 ли это?!
хотя все анализаторы показали именно RC2...
| Сообщение посчитали полезным: |
Ранг: 38.3 (посетитель) Активность: 0.02↘0 Статус: Участник
|
Создано: 19 декабря 2007 22:33 · Личное сообщение · #29
00409AEB |. C640 38 02 MOV BYTE PTR DS:[EAX+38],2
00409AEF |. E8 64810000 CALL 00411C58 <<< ПРОВЕРКА ТУТА
DMD пишет:
не похоже...
Да, это обманка походу.
Проверка дальше:
00409B91 |. E8 66D6FFFF CALL 004071FC ; \Back2Lif.004071FC
00409B96 |. 8B15 C8B64100 MOV EDX,DWORD PTR DS:[41B6C8] ; Back2Lif.0041C8B4
00409B9C |. 8902 MOV DWORD PTR DS:[EDX],EAX
00409B9E |. E8 79FCFFFF CALL 0040981C
00409BA3 |. E8 707C0000 CALL 00411818 ; \ Проверка (часть проверки)
Причём прога определяет, если эту процедуру трейсят или в ней установлены брейкпоинты, хз как.
| Сообщение посчитали полезным: |
Ранг: 38.3 (посетитель) Активность: 0.02↘0 Статус: Участник
|
Создано: 19 декабря 2007 22:35 · Личное сообщение · #30
По поводу RC2, в кейгене тож присутствует ;).
| Сообщение посчитали полезным: |
Ранг: 38.3 (посетитель) Активность: 0.02↘0 Статус: Участник
|
Создано: 20 декабря 2007 03:20 · Поправил: 4t · Личное сообщение · #31
00411818 $ PUSH EBP
00411819 . MOV EBP,ESP
0041181B . ADD ESP,-1C
0041181E . PUSH EBX
0041181F . PUSH ESI
00411820 . PUSH EDI
00411821 . MOV DWORD PTR DS:[41CB04],0FE
0041182B . MOV EAX,DWORD PTR DS:[41CB04]
00411830 . MOV ECX,19
00411835 . CDQ
00411836 . IDIV ECX
00411838 . MOV DWORD PTR DS:[41CB08],EAX
0041183D . MOV EAX,DWORD PTR DS:[41B694]
00411842 . CMP DWORD PTR DS:[EAX],0 ; не равняется ли RegKey 0
00411845 . JE 00411A84 ; если да, то на выход
0041184B . MOV EAX,DWORD PTR DS:[41B67C]
00411850 . CMP DWORD PTR DS:[EAX],0 ; не равняется ли UserName 0
00411853 . JE 00411A84 ; если да, то на выход
00411859 . XOR EBX,EBX
0041185B . LEA EAX,DWORD PTR SS:[EBP-A] {<- очищаем буфер
0041185E . XOR ECX,ECX
00411860 . MOV EDX,0A
00411865 . CALL 00402720 ; FillChar ->}
0041186A . MOV EAX,DWORD PTR DS:[41B67C]
0041186F . MOV EAX,DWORD PTR DS:[EAX] ; | offset UserName
00411871 . CALL 00403328 ; \ Get UserName length
00411876 . TEST EAX,EAX
00411878 . JLE SHORT 004118A5
0041187A . MOV ESI,1 ; {<- UserName не должно быть больше 10 символов
0041187F > INC EBX ; иначе приведём его к 10 символам:
00411880 . MOV EDX,DWORD PTR DS:[41B67C] ; 11 - станет первым, 12 - 2, и так далее (по кругу).
00411886 . MOV EDX,DWORD PTR DS:[EDX] ; обозвал FixRegName
00411888 . MOV DL,BYTE PTR DS:[EDX+ESI-1]
0041188C . MOV BYTE PTR SS:[EBP+EBX-B],DL
00411890 . CMP EBX,0A
00411893 . SETL DL
00411896 . AND EDX,0FF
0041189C . IMUL EDX,EBX
0041189F . MOV EBX,EDX
004118A1 . INC ESI
004118A2 . DEC EAX
004118A3 .^ JNZ SHORT 0041187F ; ->}
004118A5 > LEA EAX,DWORD PTR SS:[EBP-14] ; {<- очищаем буфер
004118A8 . XOR ECX,ECX
004118AA . MOV EDX,0A
004118AF . CALL 00402720 ; \ FillChar ->}
004118B4 . LEA EDX,DWORD PTR SS:[EBP-14] ; | offset buf
004118B7 . MOV EAX,DWORD PTR DS:[41B694]
004118BC . MOV EAX,DWORD PTR DS:[EAX] ; | offset RegKEY
004118BE . CALL 004111D4 ; \ StrToInt (до первого no_HEX символа, огранечение 10 байт) = обозвал xb_RegKey
004118C3 . MOV ESI,EAX
004118C5 . LEA ECX,DWORD PTR SS:[EBP-A] ; | offset FixRegName
004118C8 . MOV EDX,ESI
004118CA . SAR EDX,1 ; EDX < RegKey (количество цифр до первой буквы) div 2
004118CC . JNS SHORT 004118D1
004118CE . ADC EDX,0
004118D1 > LEA EAX,DWORD PTR SS:[EBP-14] ; | offset xb_RegKey
004118D4 . CALL 004117EC ; \ RC2
004118D9 . MOV EAX,ESI
004118DB . SUB EAX,7
004118DE . MOV DWORD PTR DS:[41CB08],EAX
004118E3 . MOV EAX,DWORD PTR SS:[EBP-14] ; {<- сохранеям mini-key (0Ah, )
004118E6 . MOV DWORD PTR SS:[EBP-A],EAX ; 1 часть
004118E9 . MOV EAX,DWORD PTR SS:[EBP-10]
004118EC . MOV DWORD PTR SS:[EBP-6],EAX ; 2 часть
004118EF . MOV AX,WORD PTR SS:[EBP-C]
004118F3 . MOV WORD PTR SS:[EBP-2],AX ; 3 часть ->}
004118F7 . LEA ECX,DWORD PTR SS:[EBP-A] ; | offset mini-key
004118FA . MOV EDX,00411B64 ; | buf
004118FF . MOV EAX,00411394 ; | buf
00411904 . CALL 004112D8 ; \ XorBlock
00411909 . MOV EAX,004111D4 ; Entry address
0041190E . SUB EAX,00411094 ; Entry address
00411914 . DEC EAX
00411915 . MOV DWORD PTR SS:[EBP-1C],EAX
00411918 . MOV EAX,DWORD PTR SS:[EBP-1C]
0041191B . CALL 004024FC ; \ ReallocMem
00411920 . MOV DWORD PTR SS:[EBP-18],EAX
00411923 . MOV EDX,00411094 ; {<-| offset crypt_proc
00411928 . MOV ECX,DWORD PTR SS:[EBP-1C] ; | размер (13Fh)
0041192B . MOV EAX,DWORD PTR SS:[EBP-18] ; | offset buf
0041192E . CALL 00405228 ; \ Move (сохраняем crypt_proc) ->}
00411933 . LEA ECX,DWORD PTR SS:[EBP-A] ; | mini-key (0Ah)
00411936 . MOV EAX,00411094 ; | offset crypt_proc
0041193B . MOV EDX,DWORD PTR SS:[EBP-1C] ; | зазмер (13Fh)
0041193E . CALL 004117EC ; \ RC2 (Decrypt)
00411943 . XOR EAX,EAX
00411945 . PUSH EBP
00411946 . PUSH 00411981
0041194B . PUSH DWORD PTR FS:[EAX]
0041194E . MOV DWORD PTR FS:[EAX],ESP
00411951 . MOV EBX,00411094 ; Entry address
00411956 . PUSH 0A
00411958 . PUSH 0
0041195A . MOV ECX,DWORD PTR SS:[EBP-1C]
0041195D . MOV EDX,00411A94 ; ASCII "KEY-122-58"
00411962 . MOV EAX,EBX ; |
00411964 . CALL 00417440 ; \ проверка, верно ли раскриптовали процедуру
00411969 . TEST AL,AL ; если нет
0041196B . JE SHORT 00411977 ; то прыгнем
0041196D . MOV EDX,ESI
0041196F . LEA EAX,DWORD PTR SS:[EBP-A]
00411972 . CALL 00411094 ; \ crypt_proc
00411977 > XOR EAX,EAX
00411979 . POP EDX
0041197A . POP ECX
0041197B . POP ECX
0041197C . MOV DWORD PTR FS:[EAX],EDX
0041197F . JMP SHORT 00411995
00411981 .^ JMP 00402B54
Этот кусочек разложил(вроде). Как ломается хз, кейген конечно проще разложить ;).
Тут возник вопрос:
XorBlock в dcpcrypt присутсвует, а в dcpcrypt2 его нету, алгоритм вроде один и тот же - RC2.
В чём прикол тогда ?.
И куда делся аффтар ?
| Сообщение посчитали полезным: |