---------------------------------------
#!/usr/share/doc/defaced/3/misc/faq.txt
---------------------------------------


FAQ  [ by defaced staff ]
---

================================================================================
Тема:	FAQ
От: "Roneon" <[email protected]> 
================================================================================

Нужно  написать  прогу(Delphi/C++/VB/(Pascal/C)),  которая  в  других программах
будет  искать  первый  попавшийся  условный переход, и заменять его безусловным.
Вопрос:  возможно  ли  это?  Первое  время  я был уверен, что возможно, но потом
столкнулся  со следующими проблемами: типов условных переходов -больше двадцати,
и ещё несколько мелких проблем. Если возможно, то второй вопрос: каким(примерно)
образом? Неужели, прийдётся искать все условные переходы(7D, 0F8D, 75, 0F85, 74,
0F84,  77,  0F87,  0F86,  0F83,  0F82, 0F82, 0F83, 0F86, 0F87, 0F8F, 0F8E, 0F8D,
0F8C,  0F8C,  0F8D,  0F8E, 0F8F), и заменять их на противоположенные/EB/EB90?! В
небольшой  программке их будет около 1500, а мне нужно не более 100... =( Может,
какой-то  тип  условных  переходов  более распостранён(Мне нужно банальное If из
Delphi и/или C++), считается "классическим"?


[ Вероятно ты имеешь в виду что-то вроде этого:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ActnList, StdCtrls;

type
  TForm1 = class(TForm)
    ActionList1: TActionList;
    OpenDialog1: TOpenDialog;
    Button1: TButton;
    AcOpen: TAction;
    procedure AcOpenExecute(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.AcOpenExecute(Sender: TObject);
var
f: textfile;
f1: textfile;
s: string;
pos1, pos2: integer;
begin
if OpenDialog1.Execute then
  begin
    assignfile(f, OpenDialog1.FileName);
    assignfile(f1, OpenDialog1.FileName+'1');
    reset(f);
    rewrite(f1);
    while not EoF(f) do
      begin
        readln(f, s);
        pos1:=pos('if', s);
        pos2:=pos('goto', s);
        if (pos1<>0) and (pos2<>0) then s:=copy(s, pos2, length(s));
        writeln(f1, s);
      end;
    closefile(f);
    closefile(f1);
  end;
end;

end.

Если  же в виду имелась замена условных переходов в бинарных исполнимых файлах (
типа замены jne на je ), то тут тебе помочь ничем могу ]


================================================================================
Тема: FAQ
От: Vovan <[email protected]>
================================================================================

  Хотелось бы по подробнее узнать о процессе чистки логов!:))))
  Если можно, с особенностями конкретных ОСей!

  
                                                        -=NUX=-

[ в этом номере есть статья на данную тему ]



================================================================================
Тема: в FAQ
От: anonymous user
================================================================================

Defaced-очень хороший журнал!:)
Расскажите pls о Proxy, по подробнее, если можно!:)))))

[  письмо пришло слишком поздно, но я обещаю, что в следующем номере обязательно
будет подробная статья по теме ]