Страница: 1 | 2 | 3 | 4 | 5 | 6 |
Вопрос: Прога пишет в себя.
Добавлено: 03.08.04 03:49
Автор вопроса: CyRax | Web-сайт:
Может кто уже нашёл способ?
А может он и был, просто я не знал :)
Ответы
Всего ответов: 77
Номер ответа: 1
Автор ответа:
Eddie
Вопросов: 11
Ответов: 120
Профиль | | #1
Добавлено: 03.08.04 10:56
Моя Теория: Подгружает другой Фил, Другой Фил Записывает в другого "Себя" то что нужно и всего делов d
2- Открыть самого Ся Двоичным способом и Записать то что Нужно и Сохранить ...
Зы : не Один из Этих способов я непробовал, просто Теория, Мало ли на какую Мысль я Тебя натолкну d
Номер ответа: 2
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #2
Добавлено: 03.08.04 11:32
Думаю, надо какой-то автономный патчер в ресурсах, например. Когда нужно что-то записать в себя, извлекаешь патчер, запускаешь его с параметрами. Патчер вырубает прогу, патчит ехе, снова запускает прогу и мирно удаляеться. Что-то типа этого. Но я бы не стал так делать...
Номер ответа: 3
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #3
Добавлено: 03.08.04 11:59
Ой, патчеры ресурсы, не находите что все это лишнее ? Предлагаю еще одно ламерское решение:
- Считать свой файл в память
- Найти ту секцию, в которой мы будем делать изменения
- Изменить данные в ней
- Сохранить файл на диск
- Удалить себя и переименовать тот файл что создали...
И никаких ненужных патчей...
А вот чтобы, действительно, так что взял и переписал код в своем файле... это такого способа я не знаю
Номер ответа: 4
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #4
Добавлено: 03.08.04 15:16
>Думаю, надо какой-то автономный патчер в ресурсах
Ресурсы даже ламер взломает.
Я здесь недавно читал что запущенный файл удалить нельзя, а вот переименовать можно. Кто то пробовал?
Номер ответа: 5
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #5
Добавлено: 03.08.04 15:17
Переименование не проканало.
Номер ответа: 6
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #6
Добавлено: 03.08.04 15:57
Прога запускается и своим процессом пишет в свой файл? Прямого пути явно нет. Даже писать в секцию кода в памяти по умолчанию нельзя. Если же включить воображение, то можно попробовать выйти в ring0, где использовать low-level доступ к винту.
Номер ответа: 7
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #7
Добавлено: 03.08.04 16:10
А вот так получилось. Хотя ещё по мелочи надо доработать. Это правда не дописывание, а убийство файла оригинала, но принцип тот же.
#Compile Exe "KillMe.exe"
#Dim All
#Include "WIN32API.INC"
Function PbMain()
If Command$="" Then GoTo SkipRmv
 im ExePath As String, PrevPID As Long
ExePath=Parse$(Command$,",",1)
PrevPID=Val(Parse$(Command$,",",2))
 im y As Long
KillLoop:
Kill ExePath
y = Err
If y>0 Then
 im PcExit As Long
GetExitCodeProcess PrevPID,PcExit
ExitProcess PcExit
GoTo KillLoop
End If
EXITProcess ByVal 0&
SkipRmv:
 im App_ExeNameZ As Asciiz*255
GetModuleFileName ByVal 0&,App_ExeNameZ,254
FileCopy App_ExeNameZ,"Killer.exe"
ShellExecute 0&,ByVal 0&,"Killer.exe",App_ExeNameZ &"," & Str$(GetCurrentProcess()),"",%SW_SHOWNORMAL
EXITProcess ByVal 0&
End Function
Номер ответа: 8
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #8
Добавлено: 03.08.04 19:12
гм.. интересную тему затронули...
меня тоже когдато волновал этот вопрос...
CyRax'у респект...
Номер ответа: 9
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #9
Добавлено: 07.08.04 05:30
Жаль только что идей никто не предоставил.
Номер ответа: 10
Автор ответа:
j3d1
ICQ: 8370005
Вопросов: 34
Ответов: 466
Профиль | | #10
Добавлено: 07.08.04 16:16
//0
писать в самого себя на уровне драйвера, и чтоб вобще было зашибись CRC надо тоже патчить, чтоб ни кто не заподозрил что в фаил что то дописали
Номер ответа: 11
Автор ответа:
j3d1
ICQ: 8370005
Вопросов: 34
Ответов: 466
Профиль | | #11
Добавлено: 07.08.04 16:18
можно как говорили в //1, только написать другую под програмульку которой передаются параметры при выходе, и которая дописывает в ехе
Номер ответа: 12
Автор ответа:
j3d1
ICQ: 8370005
Вопросов: 34
Ответов: 466
Профиль | | #12
Добавлено: 07.08.04 17:16
Код проги которая инкриментирует в себе щётчик ---
Sub Main()
Dim buf As Byte, bs As String, csum As Long
On Error GoTo 10
Open App.Path & "\csum" For Input As #1
Line Input #1, tmp
csum = Val(tmp)
Close #1
20:
'''''''''''
Dim cc As Long: cc = 0
Open App.Path & "\" & App.EXEName & ".exe" For Binary As #1 Len = Len(buf)
 o While Not EOF(1)
Get #1, csum + cc, buf
bs = bs & Chr(buf)
cc = cc + 1
Loop
ret = InStr(1, bs, "-"
lret = Trim(Right(bs, Len(bs) - ret))
cnt = Val(lret) + 1
MsgBox cnt
30:
Put #1, csum, "TEST - " & cnt
Close #1
''''''''''''
Exit Sub
10:
Close #1
Open App.Path & "\" & App.EXEName & ".exe" For Binary As #1 Len = Len(buf)
csum = 0
 o While Not EOF(1)
Get #1, , buf
csum = csum + 1
Loop
Close #1
Open App.Path & "\csum" For Output As #1
Print #1, csum
Close #1
Resume 20
End Sub
Номер ответа: 13
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #13
Добавлено: 08.08.04 00:01
Ну и чё она делает?
Запустил, а она в циклит на Msgbox числа 1.
Пришлось убивать через CAD.
А рабочего кода нет случайно?
Номер ответа: 14
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #14
Добавлено: 08.08.04 04:33
Вариантом было бы создание автопатчера, который писался бы в отдельный ехешник (что патчить можно писать в отдельный текстовый файл) и батника, который бы запускал патчер, ждал завершения его работы, а потом убивал бы его, текстовик, а потом себя.
Номер ответа: 15
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #15
Добавлено: 08.08.04 11:16
А батник где хранить? внутри экзешника? Так его вычислить ничего не стоит. Крякеры отнюдь не идиоты, иначе бы они не взламывали ВСЕ защищённые проги.
Ну а насчёт того что два экзешника я и сам думал. Только пока не разбирался как один к другому прикреплять.