Witam.
Czy jest możliwe aby otworzyć program ze zmiennej?
Mam na myśli to, że wczytuje do jakieś zmiennej (np. char) cały program (oczywiście inny program) a potem go normalnie otwieram.
Da się tak zrobić?
Hm...
Czyli masz zapisany program w jednym znaku?
Ciekawe...
PS: rozumiem, że to pomyłka i miał być string; masz w nim ścieżkę, czy cały program wczytany do niego?
O_o
Znaczy chcesz w swoim programie schować inny program? Poczytaj o zasobach.
Patryk27 napisał(a)
Hm...
Czyli masz zapisany program w jednym znaku?
Ciekawe...PS: rozumiem, że to pomyłka i miał być string; masz w nim ścieżkę, czy cały program wczytany do niego?
czepiasz się szczegółów, chodziło mi o odpowiednio duża tablicę
o_O napisał(a)
O_o
Znaczy chcesz w swoim programie schować inny program? Poczytaj o zasobach.
Coś w ten deseń.
chce właśnie umieścić inny program w swoim (dokładnie na końcu pliku), potem go wczytać o w odpowiednim momencie otworzyć.
Jak już było wyżej, poczytaj o zasobach.
Trzymanie programu w string'u, czy jakiejś tablicy, to najgłupszy pomysł na świecie.
Takie rzeczy to tylko w Erze.
Patryk27 napisał(a)
Hm...
PS: rozumiem, że to pomyłka i miał być string; masz w nim ścieżkę, czy cały program wczytany do niego?
Cały program wczytany do zmiennej i chce go z niej uruchomić.
Da się tak zrobić?
Albo otworzyć ten program który znajduję się w innym pliku od x bajta.
poczytałem o tych zasobach mniej więcej.
mam kilka pytań:
1.Czy ten program który tam umieszczę będzie on w jakiś sposób zmieniony(chodzi mi o binarke jego)
2.Jak umieszczę ten program w zasobach to jak później go uruchomić?
1.Nie, nie będzie, chyba, że źle go wpakujesz.
2.Wypakować (pewnie są jakieś biblioteki), a potem uruchomić.
Patryk27 napisał(a)
2.Wypakować (pewnie są jakieś biblioteki), a potem uruchomić.
pisząc "wypakować" masz na myśli to że powstaje nowy plik, a potem go się uruchamia?
Jeśli tak to czy da radę jakoś inaczej tak aby nic nowego nie powstawało? tylko otworzyć go z innego pliku?
Jak już mówiłem, takie rzeczy to tylko w Erze.
Czekaj, skoro nie chcesz, aby plik był tworzony, to co to robisz?
Jeżeli wirusa, itp, to żegnamy :P
Doklejka da radę zadziałać, ale takie rzeczy to tylko w Assemblerze.
A każdy przyzwoity antywirek zeżre kogoś kto chce takie herezje wyprawiać.
A może on chce napisać po prostu kompilator? :P
Nie napisałeś w jakim języku program chcesz uruchomić. Tak czy inaczej napisałem gotowca.
#include <stdio.h>
char data[512];
char ptr;
int stack[32];
int stackNdx;
char *the_program = "[-]>[-]<>++++++++[<++++++++++>-]<.>+++++[<+++++++>-]<-.---.--------.+++++++++++.-----------------.\
++++++++++++.>+++++++[<----------->-]<.>++++++++[<+++++++++++>-]<-.>++++++++[<----------->-]<+.>++++++++[<++++++++++>-]<.\
++.---.--------.+++++++++++.-----------------.++++++++++++.----.----.>+++++++[<---------->-]<+.>+++++++[<++++++++++++>-]<+.\
---.+++.>+++[<------>-]<.+++++.+++++++.--.----.++++++.-.+++++++++++.>++++++++[<----------->-]<.";
int main()
{
int codeLen = strlen(the_program);
int i;
for(i = 0; i < codeLen; i++)
{
switch (the_program[i])
{
case '<': ptr--; break;
case '>': ptr++; break;
case '-': data[ptr]--; break;
case '+': data[ptr]++; break;
case '.': putchar(data[ptr]); break;
case ',': data[ptr] = getchar(); break;
case '[': stackNdx++; stack[stackNdx] = i; break;
case ']': if (data[ptr]) i = stack[stackNdx]; else stackNdx--; break;
}
}
}
Założyłem że uruchamiasz program w brainfucku.