Поиск:

Ответ в темуСоздание новой темы Создание опроса
> программа, выводящая сама себя 
:(
    Опции темы
piritus
Дата 26.2.2007, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



Здравствуйте
меня вдруг заинтересовал данный вопрос:
как программа на asm может вывести свое содержимое на экран?
есть какие-нибудь мысли по этому поводу?
--------------------
PM MAIL ICQ   Вверх
anwe
Дата 26.2.2007, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: нет
Всего: 23



Что значит свое содержимое? Свой код? Если да то первый вариант - запустить дизассемблер с именем файла, что совпадает с твоим. Второй - найти файл с расширением .asm и именем, совпадающим с именем программы и раскрыть его в бокноте.
PM MAIL   Вверх
Akina
Дата 26.2.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



У программы нет содержимого. Это не стакан...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Hovl
Дата 26.2.2007, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 25.2.2007

Репутация: нет
Всего: нет



Я думаю, имелось ввиду что-то типа:

на Java:
Код

package test; 
public class Reproduce { 
static String str="package test;%2$1cpublic class Reproduce {%2$1cstatic String str=%3$1c%1$1s%3$1c;%2$1cpublic static void main(String []args){System.out.printf(str,str,'%4$1cn','%4$1c%3$1c','%4$1c%4$1c');}}"; 
public static void main(String[] args){System.out.printf(str,str,'\n','"','\\');}}


или на C++:
Код

#include <stdio.h> 
void main(char*a){printf(a,34,a="main(char*a){printf(a,34,a=%c%s%c,34;}",34);}


Только вот на асм, я думаю, можно вывести только в HEX или пиши дизасм свой и в стеке себя декодируй...

Это сообщение отредактировал(а) Hovl - 26.2.2007, 20:29
PM MAIL   Вверх
piritus
Дата 26.2.2007, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



давайте не будем ехидничать
и умничать про стакан

Hovl правильно понял, что имелось в виду (неужеле вы глупее?)

вот к примеру нашел на паскале:

Код

program Project1;
Uses SysUtils; var s:array[1..10] of string;i:integer;
begin
s[1]:='program Project1;';
s[2]:='Uses SysUtils; var s:array[1..10] of string;i:integer;';
s[3]:='begin';
s[4]:='for i:=1 to 3 do writeln(s[i]);';
s[5]:='For i:=1 to 7 do writeln(format(''s[%d]:=''''%s'''''',[i,s[i]]));';
s[6]:='for i:=4 to 7 do writeln(s[i]);';
s[7]:='end.';
for i:=1 to 3 do writeln(s[i]);
For i:=1 to 7 do writeln(format('s[%d]:=''%s''',[i,s[i]]));
for i:=4 to 7 do writeln(s[i]);
end.


--------------------
PM MAIL ICQ   Вверх
sgi1981
Дата 27.2.2007, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 16.3.2006

Репутация: 1
Всего: 10



Это уже зависит от платформы.


--------------------
Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства.
PM MAIL   Вверх
piritus
Дата 27.2.2007, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



да ДОС, какая еще
--------------------
PM MAIL ICQ   Вверх
anwe
Дата 27.2.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: нет
Всего: 23



А сделай как я предложил smile 
PM MAIL   Вверх
piritus
Дата 27.2.2007, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



нужно, что бы результат был на подобии 
Код

void main(char*a){printf(a,34,a="main(char*a){printf(a,34,a=%c%s%c,34;}",34);}

--------------------
PM MAIL ICQ   Вверх
JAPH
Дата 2.3.2007, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: нет
Всего: 23




Приветствую всех.
Если требуется вариант как приведённые выше, то что-то вроде этого:
Код

dseg    segment
prog    db      "dseg   segment", 0Dh, 0Ah
        db      "prog   db      'And here again the whole program?!', 24h", 0Dh, 0Ah
        db      "dseg   ends", 0Dh, 0Ah
        db      "cseg   segment", 0Dh, 0Ah
        db      "       assume  cs:cseg, ds:dseg, ss:sseg", 0Dh, 0Ah
        db      "@:     mov     ax, dseg", 0Dh, 0Ah
        db      "       mov     ds, ax", 0Dh, 0Ah
        db      "       mov     ah, 09h", 0Dh, 0Ah
        db      "       lea     dx, prog", 0Dh, 0Ah
        db      "       int     21h", 0Dh, 0Ah
        db      "       mov     ax, 4C00h", 0Dh, 0Ah
        db      "       int     21h", 0Dh, 0Ah
        db      "cseg   ends", 0Dh, 0Ah
        db      "sseg   segment stack", 0Dh, 0Ah
        db      "       db      0400h dup (?)", 0Dh, 0Ah
        db      "sseg   ends", 0Dh, 0Ah
        db      "       end     @", 0Dh, 0Ah, 24h
dseg    ends
cseg    segment
        assume  cs:cseg, ds:dseg, ss:sseg
@:      mov     ax, dseg
        mov     ds, ax
        mov     ah, 09h
        lea     dx, prog
        int     21h
        mov     ax, 4C00h
        int     21h
cseg    ends
sseg    segment stack
        db      0400h dup (?)
sseg    ends
        end     @


Но имхо лучше
Код

dseg    segment
prog    db      'prog.asm', 0
buf     db      ?
dseg    ends
cseg    segment
        assume  cs:cseg, ss:sseg, ds:dseg
@:      mov     ax, dseg
        mov     ds, ax
        lea     dx, prog
        mov     ax, 3D00h
        int     21h
        jc      @quit
        mov     bx, ax
        mov     cx, 0001h
@1:     lea     dx, buf
        mov     ah, 3Fh
        int     21h
        test    ax, ax
        jz      @quit
        mov     dl, buf
        mov     ah, 02h
        int     21h
        jmp     short @1
@quit:  mov     ax, 4C00h
        int     21h
cseg    ends
sseg    segment stack
        db      0400h dup (?)
sseg    ends
        end     @




--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
10110111
Дата 16.3.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 28.8.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



Можно и без исходника рядом с исполняемым файлом вывести код на экран.Вот, зацените... аттач
P.S.: правда, с перенаправлением в файл будут проблемы из-за int29...

Присоединённый файл ( Кол-во скачиваний: 26 )
Присоединённый файл  selfout.asm 1,66 Kb
PM MAIL   Вверх
piritus
Дата 17.3.2007, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



интересное решение, благодарю
--------------------
PM MAIL ICQ   Вверх
Maka6er
Дата 6.5.2007, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 27.2.2007
Где: Киев

Репутация: нет
Всего: 3



Кстати такие программы называются "Куин" (англ. quine)

Это сообщение отредактировал(а) Maka6er - 6.5.2007, 00:07
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.0538 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.