Запуск exe с оперативки

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by FunOfGun, 7 Oct 2012.

  1. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    72
    Reputations:
    124
    Как с этим справляются joiner'ы и подобные? Насколько я понимаю этот процесс, они загружают файл в оперативку, из заголовка берут адресс точки входа и передают туда управление.
    Так вот вопрос, как это реализовать c#? Знаю, что язык выбран не тот, но тем интереснее :) Асмовые вставки худо-бедно сделать можно, а вот как найти куда передавать управление...
    Вобщем, буду благодарен за любые подсказки.
     
  2. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    917
    Likes Received:
    492
    Reputations:
    724
    Загрузку в раму осуществляет ОС, поясни подробнее замысел.
     
    _________________________
  3. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    72
    Reputations:
    124
    Да, при запуске с харда, но ведь и я это могу сделать:) Поексперементировал немного, точка отправления есть:
    Code:
     
    namespace prg
    {
    	class Program
    	{
    		public static void Main(string[] args)
    		{
    			byte[] t={0,1,2,3,4,5,6,7,8,9};
    			unsafe {
    				fixed(byte* p=&t[0]){ test(p);}
    			}
    			
    			foreach (byte b in t) Console .Write (b + " ");
    			Console.WriteLine ();
    			
    			Console.Write("Press any key to continue . . . ");
    			Console.ReadKey(true);
    		}
    		
    		private unsafe static void test(byte* ptr){
    			Random rnd=new Random ();
    			Console.WriteLine ((int)(ptr));
    			for (int i=0;i<10;i++) *(++ptr)=(byte)(rnd.Next()%256);
    			Console.WriteLine ((int)(ptr));
    		}
    	}
    }
    
    Пойду гуглить PE заголовок...
     
  4. MTV

    MTV New Member

    Joined:
    16 Feb 2011
    Messages:
    180
    Likes Received:
    2
    Reputations:
    0
    PE заголовок изучать изучать изучать.Как понять куда передавать управление?Пишешь подобие PE загрузчика и записываешь в память,и передаешь управление туда куда записал))
     
  5. bad_boy

    bad_boy Elder - Старейшина

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    http://www.wasm.ru/article.php?article=memfile
     
  6. mozg5522

    mozg5522 New Member

    Joined:
    4 Oct 2012
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Выше ссылка не открывается..
     
  7. SVAROG

    SVAROG Elder - Старейшина

    Joined:
    13 Feb 2007
    Messages:
    424
    Likes Received:
    86
    Reputations:
    -1
    Таки открывается.
     
  8. bad_boy

    bad_boy Elder - Старейшина

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    wasm.ru => Статьи => Секреты WIN32 =>
    Freeman - Запуск файла из памяти