Commit 9c74044b by Szeberényi Imre

extra

parent 786e305a
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="badguy" />
<Option pch_mode="2" />
<Option compiler="gcc" />
<Build>
<Target title="Debug">
<Option output="bin/Debug/miAhiba" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Debug/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-g" />
</Compiler>
</Target>
<Target title="Release">
<Option output="bin/Release/miAhiba" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Release/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-O2" />
</Compiler>
<Linker>
<Add option="-s" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-pedantic" />
<Add option="-std=c++11" />
<Add option="-Wall" />
</Compiler>
<Unit filename="badguy.cpp" />
<Extensions>
<code_completion />
<envvars />
<debugger />
<lib_finder disable_auto="1" />
</Extensions>
</Project>
</CodeBlocks_project_file>
/**
* \file: badguy.cpp
*
* A program kér egy egész számot, ennek megfelelően létrehoz egy állatot,
* majd meghívja a print metódusát.
*
* Ha beolvasott szám nem 1 v. 2, akkor valami furcsaság történik...
*
*/
#include <iostream>
#include <cstdlib>
#include <string>
class Animal {
public:
void virtual print() const = 0;
virtual ~Animal() {}
};
class Cat : public Animal {
public:
void print() const {
std::cout << "Macska" << std::endl;
}
};
class Dog : public Animal {
public:
void print() const {
std::cout << "Kutya" << std::endl;
}
};
int main() {
void doSg();
std::cout << "Ez egy: ";
Animal *ap = new Cat;
ap->print();
std::cout << std::endl;
delete ap;
std::cout << "Mi legyen?:\n1: macska\n2: kutya" << std::endl;
int a;
std::cin >> a;
if (a == 1) ap = new Cat;
if (a == 2) ap = new Dog;
doSg();
std::cout << "A Te allatod: ";
ap->print();
return 0;
}
void badguy() {
std::cout << "Ez meg hogy?" << std::endl;
system("dir");
}
void (*f)() = badguy;
void doSg() {
void **p = new void*[sizeof(void*)];
*p = &f;
}
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="hello_world" />
<Option pch_mode="2" />
<Option compiler="gcc" />
<Build>
<Target title="Debug">
<Option output="bin/Debug/miAhiba" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Debug/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-g" />
</Compiler>
</Target>
<Target title="Release">
<Option output="bin/Release/miAhiba" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Release/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-O2" />
</Compiler>
<Linker>
<Add option="-s" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-pedantic" />
<Add option="-std=c++11" />
<Add option="-Wall" />
</Compiler>
<Unit filename="hello_world.cpp" />
<Extensions>
<code_completion />
<envvars />
<debugger />
<lib_finder disable_auto="1" />
</Extensions>
</Project>
</CodeBlocks_project_file>
#include <iostream>
#include <string>
int main() {
std::string s1 = "Hello";
const char *p = (s1 + " World").c_str(); // p a Hello World-re mutat
std::cout << p << std::endl;
std::string s2 = "C++";
s2 = s2 + " 0x11";
std::cout << p << std::endl; // ismét kiírjuk: Hello World. Vagy mégse?
std::cout << s2 << std::endl;
return 0;
}
/**
* \file: buffover.cpp
* (UTF-8 kodolasu fajl. Allitsa at a kodolast,
* ha a tovabbi kommentek nem olvashatok helyesen!)
*
* \brief Buffer overflow hiba bemutatása
*
* A helyes jelszó: titok
* Próbálja ki helyes és helytelen jelszóval,
* majd 7-10 betű hosszúságú tetszőleges jelszóval is!
*
*/
#include <iostream>
#include <cstring>
#include "secret.h"
using std::cin;
using std::cout;
using std::endl;
char buff[6];
bool pass = false;
int main(void)
{
cout << "Jelszo: ";
cin >> buff;
if (strcmp(buff, "titok") != 0) {
cout << "*** Hibas jelszo ***" << endl;
} else {
cout << "Helyes jelszo" << endl;
pass = true;
}
if (pass) {
cout << ">> Hozzaferhet a titokhoz: <<" << endl;
printsecret(); // kiírja a titkos információt
}
return 0;
}
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="secret" />
<Option pch_mode="2" />
<Option compiler="gcc" />
<Build>
<Target title="Debug">
<Option output="bin/Debug/miAhiba" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Debug/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-g" />
</Compiler>
</Target>
<Target title="Release">
<Option output="bin/Release/miAhiba" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Release/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-O2" />
</Compiler>
<Linker>
<Add option="-s" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-pedantic" />
<Add option="-std=c++11" />
<Add option="-Wall" />
</Compiler>
<Unit filename="buffover.cpp" />
<Unit filename="secret.cpp" />
<Unit filename="secret.h" />
<Extensions>
<code_completion />
<envvars />
<debugger />
<lib_finder disable_auto="1" />
</Extensions>
</Project>
</CodeBlocks_project_file>
/**
* \file: secret.cpp
* (UTF-8 kodolasu fajl. Allitsa at a kodolast,
* ha a tovabbi kommentek nem olvashatok helyesen!)
*
* \brief Péda az ékezetes karakterek megjelenítésére
*
* UTF-8 kezelése bonyolultabb, mert 1 karakter több byte hosszú is lehet.
* LINUX-ban a LANG paranccsal be kell állítani a fájl kódolásának
* megfelelő nyelvet (pl: LANG=hu_HU, vagy LANG=hu_HU.utf8
*
* Ha távoli termiálemulációval csatlakozunk (pl. ssh, putty), akkor az
* ékezethelyes megjelenéshez annak a kódkészletét is jól kell beállítani.
* (pl: putty -> change settings -> translation -> latin2)
*
* Kódkonverzió: iconv (van Windows és Linux változata is)
*/
#include <iostream>
#include <clocale>
#define WINX defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)
#if WINX
#include <windows.h>
#endif // WINX
#include "secret.h"
using std::cout;
using std::endl;
void printsecret() {
setlocale(LC_ALL, "");
#if WINX
/// Windows alatt egyéb varázslatra is szükség van ...
SetConsoleCP(1250);
SetConsoleOutputCP(1250);
#endif
cout << "1. Mikor jelentkezik a buffer oveflow hiba?\n"
<< "\ta) reggel\n"
<< "\tb) aritmetikai túlcsorduláskor\n"
<< "\tc) ha elfogy a memória\n"
<< "\td) egy változót (buffert) a program hosszabban ír, mint annak a mérete" << std::endl;
}
#ifndef SECRET_H
#define SECRET_H
void printsecret();
#endif // SECRET_H
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment