Показаны сообщения с ярлыком Интересное. Показать все сообщения
Показаны сообщения с ярлыком Интересное. Показать все сообщения

ну как бэ я


Вот так я себя нарисовал. =)
www.faceyourmanga.com

HZ под флудом

Хзону уже 3 день атакуют воены упячки. Админы и модеры в поте лица трут посты и банят засранцев. =D

Как писать тру хек код.

Гулял по сетке наткнулся на этот текст:

.............
The other thing is write clear specifications as you go - as you develop the program
you will get sudden flashes of insight "ah ha - That's what it should do" - if you are on
the right track carry on. If not throw away ALL your code and start again.

Oh and listen to your subconscious - if you get the " this is not right but I don't know why "
feeling - stop - conversely if you get the " I know this is right " feeling don't stop, just
turn off your brain and type the code in.

There is a mis-conception - the best programs "write themselves" so they need no design
they have always been and they will always be - you just have to see them and write them down.
At first you grope blindly and then you see them.

(This is the Platonic view of programming - that programs have a priori existence,
we don't invent them, they have always been, we perceive them and write them down

<this is the reason why two independent programmers when given a problem to solve
often produce identical (to within renaming of parts) programs - since there is
only one solution - the correct solution>


/Joe

Кодерские хаки

[stranger@localhost ~]$ date
Сбт Дек 5 00:23:09 MSK 2009

[stranger@localhost ~]$ cat /home/stranger/h3kcode.txt
Ну для начала стоит определиться что такое «хаки».
В моем понимании это какие то нестандартные, красивые, оригинальные решение, которые явно отличаются от других. В общем что то умное и не ординарное. Собственно в этой статье я приведу пример нескольких хаков на тему кодинг. Вообще зачем они нужны? По моему главная причина это так называемый brainfuke, который является любимый занятием любого хакера/кодера. Ну и вторая причина читать данный материал – повышение уровня знания языка. Кстати примеры будут на Си.
Ну что ж. Теперь, когда я заполнил выделенную память введением, можно начинать fuke.


---[h3k 01] ---
//Очень маленькое тело
Первый хак заключается в том, что бы написать программу, которая выводила 10 раз подряд рандомные (псевдослучайные) числа. Но. Тело функции main() не должно превышать 4 символов. При том – нельзя писать доп. Функции, нельзя инклудить какие либо файлы кроме stdio.h.

Думаю ясно что 4 символами такую программу не написать (а может можно?)). Нам нужно куда то вынести этот код:

int i=0;
while(i[10)
{
printf(%i,rand(1000));
}

Но не забываем, что функции создавать нельзя. Но с помощью макроподстановок в дириктиве #define можно выполнить этот код. Смотрим:

#include [stdio.h]
#define RND int i=0,g=random(100); while(i[10){printf("%d",g);printf("\n");i++;}

int main()
{
RND;
}

Ну вот.) получилась программа из трех букв xdd
На самом деле макроподстановка довольно удобная вещь. К примеру показ баннера вашей программы. Достаточно написать

#define banner printf(«Powed by StraNger»);

И не нужно пихать код в отдельную функцию

---[h3k 02] ---
//Цикл без цикла
Давайте попробуем сделать такой трюк – нужно написать программу которая бы перебирала указанные числа по порядку и каждое новое число сумировало с предыдущим.
Но главная задача в том, что бы не использовать при этом операторы циклов.

Для начала давайте прикинем какой код будет если мы внедрим цикл(для 10 раз):

- - -
int i=0, stat=5;
while(i[10)
{
stat=stat+(stat-1);
i++;
}
- - -

Теперь нужно избавится от цикла. Конечно, можно было бы выполнять 10 раз схожий код, но это как минимум глупо. Давайте лучше вспомним, что такое оператор goto. Как известно от служит для “прыжка” программы к какой либо метке. Ну например:

- - -
if(a]0)
goto error;
else
//Тут какие то действия
errot:
printf(“OH!\n”);
- - -

Если а>0 то программа перескочит к метке error и выполнит код, который мы в ней написали.
А что нам мешает таким образом организовать цикличные действия. С помощью двух меток и двух goto. Смотрим:

#include [stdio.h]
int main()
{
int i=2,stat=0;
//Первая ссылка
one:
if(stat[10)
{
i=i+(i-1);
stat++;
goto tho;
}
else
printf("The end, i=%d",i);

}
}

Когда программа доходит до первой ссылки она проверяет переменную stat. Если она еще меньше 10, то нужно выполнять вычисления (как очередной шаг цикла) и увеличивать счетчик. Далее происходит переход ко второй метке , там выполяется точно такая же проверка.
Внимательный читатель заметит, что программу можно значительно уменьшить.
Вот так:

#include [stdio.h]
int main()
{
int i=2,stat=0;

one:
if(stat[10)
{
i=i+(i-1);
stat++;
goto one;
}
else
printf("The end, i=%d",i);
}

Как видите мы попросту выполнили переход к этой же метке.
goto самый ненавистный си оператор.
Эдсгера Дейкстры сказал: “качество программного кода обратно пропорционально количеству операторов GOTO в нём"
Действительно код становится мене понятным. Но как видите иногда его можно применить весьма оригинальным способом.
На самом деле, это не единственный способ организовать “цикл без цикла”
Если вызывать функцию рекурсивной, а в ней проверять значение счетчика получится примерно тоже самое. Вот так:

int step();
int i;
int main()
{
step();
}

int step()
{
if(i[10)
{
i++;
step();
}
else
printf("%i",i);
}



---[h3k 03] ---
//Обманутый strcmp
В этом хаке мы попытаемся обмануть функцию strcmp. Как надеюсь вы знаете он сравнивает две строки, нам же нужно что бы эти строки были не равны между собой, а функция определило противное.

На самом деле тут ничего сложного. Давайте посмотрим как например строка fukeworld располагается в памяти:
f a k e w o r l d\0
нас интересует именно конечный символ \0 он указывает на окончание строки.
Теперь вспомним, как работает strcmp. Она сравнивает две строки посимвольно до символа окончания строки (\0). Вы наверное поняли к чему я веду. Если нет смотрим пример:

#include [stdio.h]
int main(int argc, char argv[])
{
int integ;
char *w1="fuke\0world";
char *w2="fake";
integ=strcmp(w1,w2);
printf("%i\n",integ);
}

Здесь мы так скажем принудительно указали конец строки, используя символ \0. Если отсечь часть после него, то получатся как раз равные строки.
Если вы протестируете пример, то программа должна вывести на дисплей цифру 0. Это результат выполнения функции strcmp, значит строки равны.

Ну а если сделать так:

char *w1="\0fuke world";
то все будут думать, что строка пуста.

---[h3k 04] ---
//forever... oh no!
Представим себе вот такой код:

#include [stdio.h]
int main(int argc, char argv[])
{
int i=1;
for(i=1;i]0;i++)
{
printf("forever");
}
}

Как видите здесь запускается бесконечный цикл. В нем на экран выводится слово forever.
Хак заключается в том, что бы изменить программу таким образом, что наш цикл через какое то время останавливался и не был бесконечным. При том нельзя писать какие то операторы перед циклом (и в нем соответственно), нельзя создавать функции.

Здесь нам на помощь приходит опять #define. Нужно задать какую то константу, которая бы изменила работу цикла. В теле используется только printf, значит ее и нужно подставить в define:


#include [stdio.h]
#define printf continue;
int main(int argc, char argv[])
{
int i=1;
for(i=1;i]0;i++)
{
printf("forever");
}
}

Попробуйте запустить и вы уведите, что цикл не бесконечный. Точнее он не будет выполняться вообще.

---[h3k 05] ---
//10 способов создать бесконечный цикл.
С первого взгляда кажется способов выполнения действия бесконечное число раз не так уж и много. Но на самом деле это не так. Посидев 5 минут с блокнотом я нашел 10 способов (откинув однотипные решения), хотя думаю что можно найти их гораздо больше


***************
1) while(true) {}
***************


**************
2)for (;;) {}
**************


**************
3)
int i;
for (i=0;i]0;i++) {}
**************


**************
4)
int i=1;
while(i]0)
{i++}
**************


**************
5)
repeat:
printf("h");
goto repeat;
**************


**************
6)
int i;
repeat:
i=0;
while(i[1)
{
goto repeat;
i++;}
*************


*************
7)
while(1==1)
{}
*************


*************
8)
while("")
{}
*************


*************
9)
int i;
rock:
do
{
goto rock;
i++;
}
while(i[10); //самое интересное, что тут условие вообще будет игнорироваться
************


************
10)
int i;

for(i=0;i[10;i++)
{
if(i[10)
i--;
}
************
---[h3k 06] ---

//без условия.
Хак заключается в следующем – нужно написать программа которая бы принимало какое то число аргументов. В каждом аргументе находится один символ, программе нужно найти среди них нужный (пусть будет 'w'). При том – нельзя пользоваться условными конструкциями (кроме условия И ИЛИ).

Для сравнения строк будет использовать функцию strcmp(). При полном совпадении она возвращает ноль. Проблема как раз в том, как проверить результат функции.
Смотрим код:


#include [stdio.h]

int main(int argc, char *argv[])
{
int i;
for(i=0;i[argc;i++)
{
(strcmp(argv[i],"w")!=0) || printf("Нужная буква в(во) %i аргументе\n",i+1);
}
}

Происходит примерно так:
значение функции strcmp не равно нулю или (равно нулю) мы нашли нужный символ. Как видите несложно.
Первый хак заключается в том, что бы написать программу, которая выводила 10 раз подряд рандомные (псевдослучайные) числа. Но. Тело функции main() не должно превышать 4 символов. При том – нельзя писать доп. Функции, нельзя инклудить какие либо файлы кроме stdio.h.

EOF
StraNger

www.gfs-team.ru

Сижу значит щаз, сижу... музыку слухаю.
Думаю дайка на сайт gfs тимы зайду.
Захожу сморю - обновились ребятки. Выложили 2 релиза и статью.
Правда еще 13 числа. Но все таки.....

Крыса и лиса.


+
Читаю вот блог Криса и вижу на его скриншотах только браузер firefox.
Касперски значт Лису юзает. Вот оно как. А вы Опера Опера...

Я так долго тебя искал

Откопал в архивах рассказец этот. Прошу цинникам не читать, т.е. кроме ржачки ни чего не найдете.

Он не любил этот праздник. Эти сердечки во всех видах. Голубки и ленточки. Маленькие открыточки с ангелочками и все теми же сердечками. Плюс он был консерватор. В его детстве отмечали 8 марта и 23 февраля. Он до сих пор с каким-то умилением вспоминал одноклассниц, которые очень ответственно относились к этим мероприятиям.

Уж они то, наверное, без ума от этого праздника. «День всех влюбленных» — надо же! Нет, кроме рока и нескольких других необходимых вещей, Запад подарил и кое-что пошло-бесполезное...

У него не было любимой девушки. У него был кот и компьютер. И масса скрытых достоинств.
Наверное, очень хорошо скрытых. Потому что пока девушки их не разглядели. А то, что они видели, не вызывало у них восторга. Сонно-неряшливый вид, особенно с утра. Постоянные разговоры о компьютерах, серверах, модемах. Через час общения девушка уже точно знала, что Unix — это хорошо, а вот Microsoft — это неприличное слово. И ей совершенно не стоило упоминать, что она тоже имеет отношение к компьютеру, и недавно поменяла себе обои на рабочем столе.

А его приводил в восторг ужас в глазах девушек, когда они слышали, что компьютер может работать без Windows. И почему-то они сразу куда-то уходили. Нельзя сказать, что это его сильно расстраивало. У него была все что ему нужно для жизни.
Многи считали его сумасшедшим. А он плевал на них всех. Он некогда из не понимал…

Для зимы было что-то уж очень слякотно. И еще этот праздник. Все это раздражало. Что бы хоть как-то развеяться, он решил зайти в книжный магазин. Перед входом он остановился. И тут — огромные сердечки на всю витрину!
— Какая гадость, — не выдержав, сказал он вслух.
— Гадость? — Удивилась девушка, как раз вышедшая из магазина.

Она пыталась положить в сумку какую-то книжку.
— Ну, да. Вам, должно быть, очень нравятся все эти сердечки, открыточки, и сам этот праздник?
— Нравятся. Это очень романтичный праздник. А Вам, я вижу, нет?
— Не то слово. Как, как такое может нравиться?!

Девушка хотела ответить и, судя по всему, резко. Но тут пробегавший мимо здоровый мужик задел ее. Книжка, которую она так и не положила в сумку, выпала. Они наклонились над ней почти одновременно. Но он все-таки поднял книгу первым...

Эта книга как-то не вязалась с его представлением о девушках. Он с удивлением посмотрел на свою незнакомку. Она была высокая и симпатичная.
— Это вы купили для себя? Она рассмеялась.

Это была замечательная девушка. Она знала, что такое Unix, отличала FreeBSD от Linux, и понимала, что, когда он говорит машина, то не имеет в виду автомобиль. Но при этом она не знает такую кучу полезной информации. Ей действительно интересно и она задает вопросы! Настоящие вопросы. Толковые, с полным пониманием темы. Они говорили и говорили. И даже в какой-то момент они заговорили не о компьютерах...

Было уже поздно. Она с сожалением сказала, что ей пора. А он вдруг понял, что не может ее отпустить. Оказывается фраза, «я так долго тебя искал» — не выдумка доморощенных поэтов. А то, что ей нравится этот праздник — это ведь такая мелочь.
Теперь в его жизни появилось что то еще кроме компьютера…

...И он впервые в жизни купил цветы для своей девушки.

Библия С шарп

Утром прочитал в блоге М. Фл*нова, что на тираж поставлена его новая книжка"Библия С#"
Честное слово, чуть не перекрестился.
Ну во первых я очень не люблю с#. Наверно потому, что он лишен кроссплатформенности (на самом деле недостатков куча). Имхо. не нормальный язык, а очередная хрень от мелкомягких.
А во вторых я представляю, что это будет за книжка. Просто если он будет похожа на Библию дельфи, то это очень плохо. В общем посмотрим. Даже интересно, Фл*нов опять решил деньжат срубить... =)
Прикольно, что в своем блоге он написал, что искренне желает, что бы цена на книгу была ниже.
Я чуть не прослезился :)

Кстати про C# интересная заметка
http://www.securitylab.ru/news/381988.php
хм... что то я часто стал про фл*нова писать

Copyleft (Ɔ); StraNger ideas