Хех, не умею я темы называть правильно, ну да ладно..
Вообщем читаю данный форум, но я не из тех, кто просто читает, нужно немного пусть даже статус: бита %)), написать своего
ЗЫ: "Новостная лента" – нравится
Жертва анализа:
http://demonteam.narod.ru/download/calc_crypted.rar (65KB)
Не знаю чье это творчество, но посчитал, что именно на этом сэмпле лучше всего сделать "обзор", имеет место быть профессионализм у чела кто делал этот "криптор".. (на правах нуба, если что пишу – все ниже написанное: ИМХО)
Суть обзора заключается в том, чтобы указать те аспекты, на которые надо обращать при покупке/тесте криптора
Тут описаны будут вещи, ну скажем чич-то "технические", обычному юзеру тяжко будет понять – ИМХО
Всегда просите тест-крипт калькулятора(реверс/анализ такого сэмпла сделать всегда проще(реверс делайте всегда на VM!)), если файл палится(не содержащий в себе засранчика), значит это проблемы чич-то криптора
Это уже может на многое указывать, что криптует ламерок какой-то, не шарит даже в PE-формате и 99% делал с помощью чьих-то паблик, полу-приват(но, уже паленый) исходников итд..
Также смотрите на возможность изменить иконку, версию, image base(для dll) в файле и на возможность криптовать *.sys файлы
Если все это криптор умеет и после крипта траблов нет, значит, пишет его профессионал, знающий отлично PE-формат и оптимизацию
Ну и самое главное обращайте внимание на сам саппорт - криптор без поддержки это уже не криптор - ИМХО
И так посмотрим на сэмпл и сделаем первые выводы
Я здесь немного опишу софт который "юзаю", но че там в конце получиццо, хз. пишу чич-то сходу
PEview(31KB) - http://www.magma.ca/~wjr/PEview.zip
Показывает структуру PE-формата, очень удобная навигация по смещениям итд.
image base на стандартный не изменил(у калькулятора image base естественно "другой"), ставим минус
посмотрим на импорт, хм.. не изменен, но судя по структуре стаба.., сделать фейковый импорт запросто может – поставим минус
но с идеей, сразу стучимся в саппорт %))(ламерскими вопросами есссстено не тревожим)
шучу конечно-же, криптор импорт меняет, но стремно – не хватает библ типа GDI итд., разнообразия скажем так..
так теперь обратим внимание на Entry Point, кажет в первую секцию кода.. но "атрибуты" секции кода не радуют, должно быть 0x60000020, а имеем всего лишь банально 0xC0000000 – поставим минус
к ресурсам ламерское отношение – лижбы было да и хс.. - минус
на сим ламерский обзор заканчиваю, каждый более подробно может обратить внимание на все аспекты через утиль PEview или другую однотипную %)))
и так проанализируем следующее
вопрос, какие техники криптор юзает – ответ очевиден, достаточно посмотреть на код
инструмент юзаю стандартный, как и все Shadow(мод. ollydbg) более подробно читаем цикл статей на васме для нубов
для профи, посещаем - http://www.openrce.org/
из техник юзается обфускация и пермутиция
ЗЫ: вот есть пишут криптую в ручную – обычно это просто генерик рандомный(обфускация) для ламеров, чтобы повысить продажи и сделать вид, что трудиццо каг негр, но это просто сопли и не более %)))
декриптор скорее всего мутирует при каждом крипте – здесь плюс (даже с одно сэмпла, можно сделать такие выводы!)
но как я уже выше писал, атрибуты секции сведут на нет, эти "старания"
но его стаб позволяет внести небольшие изменения, чтобы убрать эти недостатки, скорее всего здесь просто еще не было траблов с аверами, поэтому все так просто..
морфа нет, сталобыть детект по "плавающим сигнатурам" возможен(ну вернее, при первом-же попадании к аверам его задетектят)
при этом, если обратить внимание на конструкции кода
они по идее меняться долны при детекте, но.. на аналогичные, до следующего детекта
такие вот конструкции(ЛЯПЫ) оставляют, чтобы создать иллюзию поддержки, но суть здесь в том, что выигрывают "ВСЕ" и аверы и криптующий
авер через определенное время(от недели до месяца) "вносит сигнатуру в базу"(для тех кто реально платит), а криптующий сразу апгрэйдит и апает темы на всех форумах %)))
ЗЫ: проверяющий, вот так сразу врятли заметит такие ляпы – ИМХО
тут можно просто подумать, что это элемент пермутации и предназначен для прыжков на перестановленный код и доказать такой ляп никто не захочет!
Взглянем на конструкции которые юзаются для защиты от ав – назовем это все одним словом anti-av
Я их разместил в порядке появления, по адресам.. думаю, понятно будет, где все находится
Не густо-о.., нового нет ничего и опять, можно сказать лижбы было – хех, минус
И еще не критично, но есть минус у него юзается конструкция для поиска загрузки адреса ntdll.dll(и не только)
Но тут трабла может выскочить, если имя ntdll.dll будет написано Ntdll.dll, файлег упадет, так как хеш уже будет другой
Но в паблике уже эту траблу обсосали, и даже готовое решение вложили - я про алго поиска, если что
Ну, далее это уже чич-то тех. аспекты и к теме отношения только косвенное имеют..(если честно надоело уже че-то писать)
Может кому пригодится
Вообщем читаю данный форум, но я не из тех, кто просто читает, нужно немного пусть даже статус: бита %)), написать своего
ЗЫ: "Новостная лента" – нравится
Жертва анализа:
http://demonteam.narod.ru/download/calc_crypted.rar (65KB)
Не знаю чье это творчество, но посчитал, что именно на этом сэмпле лучше всего сделать "обзор", имеет место быть профессионализм у чела кто делал этот "криптор".. (на правах нуба, если что пишу – все ниже написанное: ИМХО)
Суть обзора заключается в том, чтобы указать те аспекты, на которые надо обращать при покупке/тесте криптора
Тут описаны будут вещи, ну скажем чич-то "технические", обычному юзеру тяжко будет понять – ИМХО
Всегда просите тест-крипт калькулятора(реверс/анализ такого сэмпла сделать всегда проще(реверс делайте всегда на VM!)), если файл палится(не содержащий в себе засранчика), значит это проблемы чич-то криптора
Это уже может на многое указывать, что криптует ламерок какой-то, не шарит даже в PE-формате и 99% делал с помощью чьих-то паблик, полу-приват(но, уже паленый) исходников итд..
Также смотрите на возможность изменить иконку, версию, image base(для dll) в файле и на возможность криптовать *.sys файлы
Если все это криптор умеет и после крипта траблов нет, значит, пишет его профессионал, знающий отлично PE-формат и оптимизацию
Ну и самое главное обращайте внимание на сам саппорт - криптор без поддержки это уже не криптор - ИМХО
И так посмотрим на сэмпл и сделаем первые выводы
Я здесь немного опишу софт который "юзаю", но че там в конце получиццо, хз. пишу чич-то сходу
PEview(31KB) - http://www.magma.ca/~wjr/PEview.zip
Показывает структуру PE-формата, очень удобная навигация по смещениям итд.
image base на стандартный не изменил(у калькулятора image base естественно "другой"), ставим минус
посмотрим на импорт, хм.. не изменен, но судя по структуре стаба.., сделать фейковый импорт запросто может – поставим минус
но с идеей, сразу стучимся в саппорт %))(ламерскими вопросами есссстено не тревожим)
шучу конечно-же, криптор импорт меняет, но стремно – не хватает библ типа GDI итд., разнообразия скажем так..
так теперь обратим внимание на Entry Point, кажет в первую секцию кода.. но "атрибуты" секции кода не радуют, должно быть 0x60000020, а имеем всего лишь банально 0xC0000000 – поставим минус
к ресурсам ламерское отношение – лижбы было да и хс.. - минус
на сим ламерский обзор заканчиваю, каждый более подробно может обратить внимание на все аспекты через утиль PEview или другую однотипную %)))
и так проанализируем следующее
вопрос, какие техники криптор юзает – ответ очевиден, достаточно посмотреть на код
инструмент юзаю стандартный, как и все Shadow(мод. ollydbg) более подробно читаем цикл статей на васме для нубов
для профи, посещаем - http://www.openrce.org/
из техник юзается обфускация и пермутиция
ЗЫ: вот есть пишут криптую в ручную – обычно это просто генерик рандомный(обфускация) для ламеров, чтобы повысить продажи и сделать вид, что трудиццо каг негр, но это просто сопли и не более %)))
декриптор скорее всего мутирует при каждом крипте – здесь плюс (даже с одно сэмпла, можно сделать такие выводы!)
Код:
[decrypt]
01013A63 E8 6D120000 CALL 01014CD5
01014DBB 5E POP ESI
ESI=01013A68
01014FD9 81EE CCF9FFFF SUB ESI,-634
ESI=0101409C
01014D65 56 PUSH ESI
01015413 81C6 CCF9FFFF ADD ESI,-634
ESI=01013A68
01015185 B8 81432F16 MOV EAX,162F4381
EAX=162F4381
01015038 81F0 7B532F16 XOR EAX,162F537B
EAX=000010FA
01014CA0 E9 99020000 JMP 01014F3E
01014F3E F7DA NEG EDX
EDX=135E82FF
01014F40 81EA 4C49725F SUB EDX,5F72494C
EDX=B3EC39B3
0101558A 8A1E MOV BL,BYTE PTR DS:[ESI]
EBX=010100F8
0101513D C0C3 04 ROL BL,4
EBX=0101008F
01015503 C0CB 1B ROR BL,1B
EBX=010100F1
01015566 80C3 C7 ADD BL,0C7
EBX=010100B8
01015008 8AFB MOV BH,BL
EBX=0101B8B8
010150C5 883E MOV BYTE PTR DS:[ESI],BH
0101526F 46 INC ESI
ESI=01013A69
0101506E 48 DEC EAX
EAX=000010F9
01014B91 8BD0 MOV EDX,EAX
EDX=000010F9
010152BE 81EA 168358BD SUB EDX,BD588316
EDX=42A78DE3
01015306 81FA EA7CA742 CMP EDX,42A77CEA
0101530C 0F85 2EFCFFFF JNZ 01014F40
01014F73 C3 RETN
0101409C 55 PUSH EBP
но его стаб позволяет внести небольшие изменения, чтобы убрать эти недостатки, скорее всего здесь просто еще не было траблов с аверами, поэтому все так просто..
морфа нет, сталобыть детект по "плавающим сигнатурам" возможен(ну вернее, при первом-же попадании к аверам его задетектят)
при этом, если обратить внимание на конструкции кода
Код:
01013587 81FA DB845519 CMP REG,IMM32
0101358D 87C9 XCHG ECX,ECX
0101358F 0F85 1FF9FFFF JNZ 01012EB4
01012EB9 E8 8E0A0000 CALL 0101394C
0101394C 8D00 LEA EAX,DWORD PTR DS:[EAX]
0101394E 8F4424 FC POP DWORD PTR SS:[ESP-4]
такие вот конструкции(ЛЯПЫ) оставляют, чтобы создать иллюзию поддержки, но суть здесь в том, что выигрывают "ВСЕ" и аверы и криптующий
авер через определенное время(от недели до месяца) "вносит сигнатуру в базу"(для тех кто реально платит), а криптующий сразу апгрэйдит и апает темы на всех форумах %)))
ЗЫ: проверяющий, вот так сразу врятли заметит такие ляпы – ИМХО
тут можно просто подумать, что это элемент пермутации и предназначен для прыжков на перестановленный код и доказать такой ляп никто не захочет!
Взглянем на конструкции которые юзаются для защиты от ав – назовем это все одним словом anti-av
Код:
[anti trace]
01012F43 B8 72C96241 MOV EAX,4162C972
0101377C E9 A4020000 JMP 01013A25
01013A25 D2DF RCR BH,CL
01013A27 D2CD ROR CH,CL
01013556 81C0 AD326BB9 ADD EAX,B96B32AD
01013718 81F8 22AA668B CMP EAX,8B66AA22
0101371E 0F85 03030000 JNZ 01013A27
[anti debug]
01012ECC 64:8B05 30000000 MOV EAX,DWORD PTR FS:[30]
EAX=7FFDF000
01013132 8B40 54 MOV EAX,DWORD PTR DS:[EAX+54]
EAX=7F6F0688
01013187 8B40 04 MOV EAX,DWORD PTR DS:[EAX+4]
EAX=7F6F06A0
0101375C 8B40 04 MOV EAX,DWORD PTR DS:[EAX+4]
EAX=7F6F2170 UNICODE "C:\WINDOWS"
010131F2 8B40 04 MOV EAX,DWORD PTR DS:[EAX+4]
EAX=0057005C
010139DE 81E8 5D005700 SUB EAX,57005D
EAX=FFFFFFFF
01013485 CD 2E INT 2E
EAX=C000001C EDX=FFFFFFFF EDX=01013487
01012DAF 2BD0 SUB EDX,EAX
EDX=4101346B
0101356E 81C2 1C0000C0 ADD EDX,C000001C
EDX=01013487
01013A50 81EA 02000000 SUB EDX,2
EDX=01013485
01013081 8BC2 MOV EAX,EDX
EAX=01013485
01012F65 66:8138 CD2E CMP WORD PTR DS:[EAX],2ECD DS:[01013485]=2ECD
01012F6A E9 78040000 JMP 010133E7
010133E7 74 88 JE SHORT 01013371
010138B7 C3 RETN
01013371 E9 ED060000 JMP 01013A63
[anti emulator]
010140A3 B8 03000000 MOV EAX,3
EAX=00000003
010140A8 E9 77FEFFFF JMP 01013F24
01013F24 33D2 XOR EDX,EDX
EDX=00000000
01013F26 66:8EE8 MOV GS,AX
01013F29 E9 02FFFFFF JMP 01013E30
01013E30 66:8CE8 MOV AX,GS
EAX=00000000
01013E33 D1C8 ROR EAX,1
01013E35 72 F9 JB SHORT 01013E30
01013E37 FC CLD
Не густо-о.., нового нет ничего и опять, можно сказать лижбы было – хех, минус
И еще не критично, но есть минус у него юзается конструкция для поиска загрузки адреса ntdll.dll(и не только)
Код:
[get ntdll.dll module handle]
01013A8C 68 F55ACF54 PUSH 54CF5AF5 хеш
010146F7 E8 E3FEFFFF CALL 010145DF
======
010145DF 55 PUSH EBP
010140B1 8BEC MOV EBP,ESP
EBP=0006FF58
010140B3 53 PUSH EBX
010140B4 64:8B15 30000000 MOV EDX,DWORD PTR FS:[30]
EDX=7FFD5000
010140BB 8B52 0C MOV EDX,DWORD PTR DS:[EDX+C]
EDX=00191EA0
01014922 8BDA MOV EBX,EDX
EBX=00191EA0
01014924 83C3 0C ADD EBX,0C
EBX=00191EAC
010148DF 8B52 0C MOV EDX,DWORD PTR DS:[EDX+C]
EDX=00191EE0
010148E2 8B12 MOV EDX,DWORD PTR DS:[EDX]
EDX=00191F48
010147CF 3BD3 CMP EDX,EBX
010147D1 0F85 12010000 JNZ 010148E9
010148E9 8B4A 30 MOV ECX,DWORD PTR DS:[EDX+30]
ECX=7C9226A4 UNICODE "ntdll.dll"
010148C2 33C0 XOR EAX,EAX
EAX=00000000
010148CE 66:8339 00 CMP WORD PTR DS:[ECX],0 DS:[7C9226A4]=006E
01014746 0F85 7A010000 JNZ 010148C6
010148C6 C1C0 07 ROL EAX,7
010148C9 3201 XOR AL,BYTE PTR DS:[ECX]
EAX=0000006E
010148CB 83C1 02 ADD ECX,2
ECX=7C9226A6 UNICODE "tdll.dll"
010148CE 66:8339 00 CMP WORD PTR DS:[ECX],0 DS:[7C9226A8]=0064
01014746 0F85 7A010000 JNZ 010148C6
0101474C F7D0 NOT EAX
EAX=54CF5AF5
0101474E 3B45 08 CMP EAX,DWORD PTR SS:[EBP+8]
0101468F 0F85 36010000 JNZ 010147CB
01014695 8B42 18 MOV EAX,DWORD PTR DS:[EDX+18]
EAX=7C900000 IMAGEBASE "C:\WINDOWS\system32\ntdll.dll"
01014698 E9 3A010000 JMP 010147D7
010147CB 8B12 MOV EDX,DWORD PTR DS:[EDX]
010147CD 33C0 XOR EAX,EAX
010147CF 3BD3 CMP EDX,EBX
010147D1 0F85 12010000 JNZ 010148E9
010147D7 5B POP EBX
EBX=BEFE3F66 ESP=0006FF58
01014334 C9 LEAVE
ESP=0006FF5C EBP=0006FF84
01014335 C2 0400 RETN 4
Но в паблике уже эту траблу обсосали, и даже готовое решение вложили - я про алго поиска, если что
Ну, далее это уже чич-то тех. аспекты и к теме отношения только косвенное имеют..(если честно надоело уже че-то писать)
Может кому пригодится