ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #3501  
Старый 04.05.2009, 07:33
Progeras
Новичок
Регистрация: 03.05.2009
Сообщений: 1
Провел на форуме:
5180

Репутация: 0
По умолчанию

Вопрос по delphi.
Суть заключается в том, чтобы программа
1.Добавила новую секцию в exe файле.
2.Записала туда какой-то код(он будет запрашивать пароль).
3.Сменила точку входа(Entry point) на адрес добавленного кода.
4.В конце добавленного кода поставила JMP на оригинальную точку входа(OEP).
Теперь пояснение.
Конечно сразу можно подумать, что я пишу вирус. Я знаю, что этим методом
пользуются вирусы для заражения файлов. Но на самом деле я пишу защиту для своих програм.
Дело в том, что есть у меня знакомый человек, который любит присваивать себе мои программы.
Я не хочу использовать уже готовые программы, мне нужна своя.
З.Ы. Не надо мне присылать смещения в PE Header'е и статьи на эту тему(про смещения).
Я их прекрасно знаю, но не могу их примменять, поэтому жду от вас исходники,которые выполняют
эти операции. Как добавлять новые секции я почти разобрался, а вот с EP я сел в яму.
Гугл весь перерыл, но натыкался только на вирусы написанные на ASM'е, но они мне не нужны.
З.Ы. З.Ы. За быстрый ответ с хорошим исходником, можете заработать вознаграждение
на мобильник(50 или 100 руб.).
 

  #3502  
Старый 04.05.2009, 11:09
Flame of Soul
Участник форума
Регистрация: 25.05.2007
Сообщений: 290
Провел на форуме:
1740746

Репутация: 435
Отправить сообщение для Flame of Soul с помощью MSN
По умолчанию

Progeras - Вы шутник однако, Вы просите исходники со сменой точки входа, при
том что Вы ничего не сделали для людей сидящих здесь? Вы думаете такой исход
ник на дельфинчике стоит 50-100 рублей? Мне кажется это слишком самонадеянно.
Ну а если по теме то в PE-файлах описывается специальное поле в PE-заголовке,
в котором лежит RVA-(относительный виртуальный адрес) EP, с которого как бы и
начинается выполнение. но мы то знаем, что Entry Point) выполняется не первой,
а последней. До нее система загружает все статик библиотеки и выходят на испо
лнение через Dllmain. TLS-k’и также получают управление до выполнения EP, кот
орую Вы собираетесть сменить, только не понятно какой именно участок вашего ко
да потеряет управление и EP будет некому вызывать, так как она будет указывать
неизвестно на какой код. Вот только Вы не уточняете кто у Вас этот "Маша расте
ряша", толи Dllmain или может быть TLS-callback.


#*************************************************
#define PE_off 0x3C // PE magic word raw offset
#define EP_off 0x28 // relative Entry Point filed
offset
BYTE* GetEP()
{
static BYTE* base_x, *ep_adr;
static DWORD pe_off, ep_off;
char buf [_MAX_PATH];
// obtain exe base address
GetModuleFileName(0, buf, _MAX_PATH);
base_x = (BYTE*) GetModuleHandle(buf);
pe_off = *((DWORD*)(base_x + PE_off));
ep_off = *((DWORD*)(base_x + pe_off + EP_off));
ep_adr = base_x + ep_off; // RVA to VA
return ep_adr;
}
#*************************************************

Это простейший пример GetEP(), но только боевая функция чуть чуть посерьезнее,
так как осуществляет такую огромную кучу всяких проверок. Но концепция приведе
нная выше правильная. И конечно же в данном случае Вы спрячете много чего от
отладчика, но бряк на ntdll, несработает, нет, нет, и еще раз нет, он пойдет
лесом, так как адрес EP у нас совершенно другой. Да да, самый яркий пример, это
когда парень в воскресенье подрывается с кровати и говорит, что емуу надо сроч
но на работу, а потом не звонит. если быть подробнее, то ОС никак не информиру
ет отладчик о передаче управления на EP и отладчик должен париться над этим сам
остоятельно, а не просить об этом на форуме, но так как отладчик идет лесом, я
и пишу свой обоснованный ответ, почему он туда пошел. Дизасемблирование тут то
же мало поможет так как они(дизассемблеры) сразу начинают с ЕР. а вот тут-то
без определения реальной ЕР не куда! Некоторые вири используют довольно хитрый
трюк, они как акробаты в цирке прыгают jump из TLS-callback’а, то есть, на сам
ом то деле они выполняют TLS-callback но без возврата управления. И в итоге на
ша любимая, красивая, оригинальная(это я про себя) ЕР идет к бабушке с пирожка
ми лесом и могут эти пиражки содержать что угодно (это я про ЕР). НО!!! НО!!!!
Начиная с XP, системный загрузчик выполняет ряд проверок (дабы не дать мистеру
смиту заразить матрицу)- и файлы, с точкой останова которые вылетают за преде
лы страничного образа, он просто поылат и не грузит в память. Хотя тут все ут
рированно, даже если бы он их грузил,то любой более менее нормальный авер, за-
рычал бы на вашу безобидную антиотладочную систему, так как такая ЕР уж очень
косо на него смотрит. Ну и какой смысл безобидную программу выдавать за вирус?
Тогда конечно же лучше всего закинуть ЕР в безобидный код, а из TLS-callback’а
совершить переход на тело.


#*************************************************
EntryPoint:
XOR EAX, EAX
PUSH EAX
CALL d, ds:[ExitProcess]

PassowrdBody:



TLS_Callback1:
ADD d, ds:[ESP+magic_offset], offset VirusBody
— offset EntryPoint
RETN 0Ch
#*************************************************

А вот после такого в США выбирают в президенты наштх афроамериканских друзей.
Я не рассистка конечно же, но просто в первом случае мы бы имели позорный jump
из TLS-callback’а. который бы потом пришлось маскировать с помощью математичес
ких преобразований, но целевой адрес перехода декодируется однозначно и палит.
А во втором случае TLS-callback добавляет какое-то значение к некоторой ячейке
памяти, лежащей в области стека, и возвращает управление системе. Человек с от
ладчиком чисто теоретически может трассировать миллионы тонн машинных инструк
ций, ответственных за инициализацию файла. Он может даже дождаться момента пе
редачи управления на точку входа или хотя бы область памяти, не принадлежащую
системе, а находящуюся в границах PE-файла или одной из динамических библиотек.
И тогда товарищ с удивлением обнаружит, что точка входа каким-то магическим об
разом ушла в запой! Вот только трассировать придется долго. А Аверы ничего на
скажут вашей маленькой приблуде, так как они не могут трассировать на живой ОС.
Откуда им знать, что именно находится в данной конкретной ячейке памяти? А что,
собственно говоря, там находится и как оно туда попадает?

Только стоить это будет не 50 и не 100 рублей.
 

  #3503  
Старый 04.05.2009, 11:39
KaZ@NoVa
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме:
3134311

Репутация: 1467


Отправить сообщение для KaZ@NoVa с помощью ICQ Отправить сообщение для KaZ@NoVa с помощью AIM Отправить сообщение для KaZ@NoVa с помощью Yahoo
По умолчанию

Цитата:
Сообщение от НTL  
Как можно при открытии Form2 забрать значение из Form1
Чтобы: Form2.Label2.Caption = Form1.Edit1.Text
легко. В разделе uses пишешь название юнита, содержащего эту форму.
Например, если она находится в Unit1 пишешь
uses Unit1.dcu;

вот и всё=)
 

  #3504  
Старый 04.05.2009, 12:19
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

2 Progeras там шутк 50 строк кода на асме для заражения шелкодом. И еще дохера строк шелкода который будет спрашивать пароль. ибо гемор с созданием формамы на API большой. При том что код должен быть позиционно независимый.
Добавление новой секции не всегда правильный код. При сливании секций при компиле в Си бывает получается что места нету под вставку новой таблицы для своей секции. (пример - калькулятор)

Кисто инфектор - как раз и будет стоить копейки, там нет ничего сложного, а вот сам шелкод - никто ипаться не будет из-за этого, т.к. возьни много.

Последний раз редактировалось slesh; 04.05.2009 в 12:24..
 

  #3505  
Старый 05.05.2009, 15:19
Zitt
Познавший АНТИЧАТ
Регистрация: 07.05.2006
Сообщений: 1,031
Провел на форуме:
5885100

Репутация: 773


Отправить сообщение для Zitt с помощью ICQ
По умолчанию

у DBGrid не появляется горихонтальный скролбар.. хотя даные не все на экране... как его "включить" ? )
 

  #3506  
Старый 05.05.2009, 16:18
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

в FormCreate попробуй установить свойство показа скрол бара.
SetScrollRange(DBGrid1.Handle,SB_HORZ,0,100,true);
 

  #3507  
Старый 05.05.2009, 17:00
Zitt
Познавший АНТИЧАТ
Регистрация: 07.05.2006
Сообщений: 1,031
Провел на форуме:
5885100

Репутация: 773


Отправить сообщение для Zitt с помощью ICQ
По умолчанию

Цитата:
Сообщение от slesh  
в FormCreate попробуй установить свойство показа скрол бара.
SetScrollRange(DBGrid1.Handle,SB_HORZ,0,100,true);
неа, не помогло(
 

PASCAL
  #3508  
Старый 05.05.2009, 17:21
Tapaceuka
Участник форума
Регистрация: 13.01.2008
Сообщений: 125
Провел на форуме:
207131

Репутация: 0
По умолчанию PASCAL

PASCAL
Вот задание:Билет называют «счастливым», если в его номере сумма первых трех цифр равна сумме последних трех. Подсчитать число тех «счастливых» билетов, у которых сумма трех цифр равна 13. Номер билета может быть от 000000 до 999999.
Вот что я пока написал:
Код:
program tt;
const a=001;b=009;
var m:array[a..b] of integer;i,c:integer;
begin
 for i:=a to b do m[i]:=i;
 for i:=a to b do 
  write(m[i]);
end.
Всё, сам берёт и заполняет массив и выводит его. Но как зделать чтобы число 001 не преабразовывалось просто в однёрку ?
 

  #3509  
Старый 05.05.2009, 17:38
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию

если я не ошибаюсь и правильно понял задачу (посчитать кол-во счастливых билетов, у которых сумма первых трёх цифр равна сумме последних трёх цифр и равна 13), то ответ это..

а нет. ошибаюсь. ща поправлю

((C из 15 по 2) - 3*(С из 4 по 1 + C_3 по 1 + C_2 по 1 +C_1 по 1))^2 = 75^2
вот так правильно )
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ

Последний раз редактировалось desTiny; 05.05.2009 в 18:14..
 

  #3510  
Старый 05.05.2009, 18:08
warkk
Участник форума
Регистрация: 20.02.2009
Сообщений: 183
Провел на форуме:
719582

Репутация: 50
Отправить сообщение для warkk с помощью ICQ
По умолчанию

Подскажите пожалуйста, как сделать что бы при запуске программы, она сразу сворачивалась трей?
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ