View Single Post
  #1  
Old 10-01-2014, 08:16
Razor12911's Avatar
Razor12911 Razor12911 is offline
Noob
 
Join Date: Jul 2012
Location: South Africa
Posts: 3,754
Thanks: 2,191
Thanked 11,223 Times in 2,312 Posts
Razor12911 is on a distinguished road
another update pending don't worry.

I'm afraid not, Credits cannot be removed like y_thelastknight said, and also what riodsa123, this is a freeware software and a lot of people spent their time bringing up this program so it can't be done.

and altef_4, y_thelastknight, logrim, pakrat2k2, sentinelks; I finally did this function to read imported regs. can y'all understand it? it can read strings, dword and binary, I'll have to move on to Multistring and ExpandString Soon.

Can't believe I can do such at my age. I'll kill everyone when I get to varsity.

Code:
var
  X: Integer;
  RegType: String;
  FirstLine: Boolean;
begin
  OpenDialog1.Filter := 'Registry Files (*.reg)|*.reg';
  if OpenDialog1.Execute then
  begin
    if FileExists(OpenDialog1.FileName) then
    begin
      Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
      X := 1;
      FirstLine := True;
      repeat
        RegType := AnsiLeftStr(AnsiRightStr(Memo1.Lines.Strings[X + 2],
          Length(Memo1.Lines.Strings[X + 2]) -
          Length(ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 2], AnsiPos('=',
          Memo1.Lines.Strings[X + 2]) - 1), '"', '')) - 3),
          AnsiPos(':', AnsiRightStr(Memo1.Lines.Strings[X + 2],
          Length(Memo1.Lines.Strings[X + 2]) -
          Length(ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 2], AnsiPos('=',
          Memo1.Lines.Strings[X + 2]) - 1), '"', '')) - 3)));
        if (RegType = 'dword:') or (RegType = 'hex:') or
          (AnsiPos('"="', Memo1.Lines.Strings[X + 2]) <> 0) or
          (AnsiPos('@="', Memo1.Lines.Strings[X + 2]) <> 0) or
          (AnsiPos('@=dword:', Memo1.Lines.Strings[X + 2]) <> 0) or
          (AnsiPos('@=hex:', Memo1.Lines.Strings[X + 2]) <> 0) then
        begin
          StringGrid6.RowCount := StringGrid6.RowCount + 1;
          if FirstLine then
          begin
            FirstLine := False;
            StringGrid6.Cells[0, StringGrid6.RowCount - 1] :=
              ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[2],
              AnsiPos('\', Memo1.Lines.Strings[2]) - 1), '[', '');
            StringGrid6.Cells[1, StringGrid6.RowCount - 1] :=
              ReplaceStr(ReplaceStr(AnsiRightStr(Memo1.Lines.Strings[2],
              Length(Memo1.Lines.Strings[2]) - Length(StringGrid6.Cells[0,
              StringGrid6.RowCount - 1]) - 2), ']', ''), '\Wow6432Node', '');
          end
          else
          begin
            if AnsiPos('[H', Memo1.Lines.Strings[X + 1]) <> 0 then
            begin
              StringGrid6.Cells[0, StringGrid6.RowCount - 1] :=
                ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 1],
                AnsiPos('\', Memo1.Lines.Strings[X + 1]) - 1), '[', '');
              StringGrid6.Cells[1, StringGrid6.RowCount - 1] :=
                ReplaceStr(ReplaceStr(AnsiRightStr(Memo1.Lines.Strings[X + 1],
                Length(Memo1.Lines.Strings[X + 1]) - Length(StringGrid6.Cells[0,
                StringGrid6.RowCount - 1]) - 2), ']', ''), '\Wow6432Node', '');
            end
            else
            begin
              StringGrid6.Cells[0, StringGrid6.RowCount - 1] :=
                StringGrid6.Cells[0, StringGrid6.RowCount - 2];
              StringGrid6.Cells[1, StringGrid6.RowCount - 1] :=
                StringGrid6.Cells[1, StringGrid6.RowCount - 2];
            end;
          end;
          if (AnsiPos('"="', Memo1.Lines.Strings[X + 2]) <> 0) or
            (AnsiPos('@="', Memo1.Lines.Strings[X + 2]) <> 0) then
            StringGrid6.Cells[2, StringGrid6.RowCount - 1] := 'String';
          if (RegType = 'dword:') or
            (AnsiPos('@=dword:', Memo1.Lines.Strings[X + 2]) <> 0) then
            StringGrid6.Cells[2, StringGrid6.RowCount - 1] := 'DWORD';
          if (RegType = 'hex:') or
            (AnsiPos('@=hex:', Memo1.Lines.Strings[X + 2]) <> 0) then
            StringGrid6.Cells[2, StringGrid6.RowCount - 1] := 'Binary';
          if StringGrid6.Cells[2, StringGrid6.RowCount - 1] = 'String' then
          begin
            if (AnsiPos('"="', Memo1.Lines.Strings[X + 2]) <> 0) then
            begin
              StringGrid6.Cells[3, StringGrid6.RowCount - 1] :=
                ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 2],
                AnsiPos('=', Memo1.Lines.Strings[X + 2]) - 1), '"', '');
              StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
                AnsiLeftStr
                (ReplaceStr(ReplaceStr(AnsiRightStr(Memo1.Lines.Strings[X + 2],
                Length(Memo1.Lines.Strings[X + 2]) - Length(StringGrid6.Cells[3,
                StringGrid6.RowCount - 1]) - 4), '\\', '\'), '\"', '"'),
                Length(ReplaceStr(ReplaceStr(AnsiRightStr(Memo1.Lines.Strings[X
                + 2], Length(Memo1.Lines.Strings[X + 2]) -
                Length(StringGrid6.Cells[3, StringGrid6.RowCount - 1]) - 4),
                '\\', '\'), '\"', '"')) - 1);
            end
            else
            begin
              StringGrid6.Cells[3, StringGrid6.RowCount - 1] :=
                ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 2],
                AnsiPos('=', Memo1.Lines.Strings[X + 2]) - 1), '@', '');
              StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
                AnsiLeftStr
                (ReplaceStr(ReplaceStr(AnsiRightStr(Memo1.Lines.Strings[X + 2],
                Length(Memo1.Lines.Strings[X + 2]) - Length(StringGrid6.Cells[3,
                StringGrid6.RowCount - 1]) - 3), '\\', '\'), '\"', '"'),
                Length(ReplaceStr(ReplaceStr(AnsiRightStr(Memo1.Lines.Strings[X
                + 2], Length(Memo1.Lines.Strings[X + 2]) -
                Length(StringGrid6.Cells[3, StringGrid6.RowCount - 1]) - 3),
                '\\', '\'), '\"', '"')) - 1);
            end;
          end;
          if StringGrid6.Cells[2, StringGrid6.RowCount - 1] = 'DWORD' then
          begin
            if RegType = 'dword:' then
            begin
              StringGrid6.Cells[3, StringGrid6.RowCount - 1] :=
                ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 2],
                AnsiPos('=', Memo1.Lines.Strings[X + 2]) - 1), '"', '');
              StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
                '0x' + AnsiRightStr(Memo1.Lines.Strings[X + 2],
                Length(Memo1.Lines.Strings[X + 2]) - Length(StringGrid6.Cells[3,
                StringGrid6.RowCount - 1]) - 9);
            end
            else
            begin
              StringGrid6.Cells[3, StringGrid6.RowCount - 1] :=
                ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 2],
                AnsiPos('=', Memo1.Lines.Strings[X + 2]) - 1), '@', '');
              StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
                '0x' + AnsiLeftStr(AnsiRightStr(Memo1.Lines.Strings[X + 2],
                Length(Memo1.Lines.Strings[X + 2]) - Length(StringGrid6.Cells[3,
                StringGrid6.RowCount - 1]) - 8),
                Length(AnsiRightStr(Memo1.Lines.Strings[X + 2],
                Length(Memo1.Lines.Strings[X + 2]) - Length(StringGrid6.Cells[3,
                StringGrid6.RowCount - 1]) - 3)) - 1);
            end;
          end;
          if StringGrid6.Cells[2, StringGrid6.RowCount - 1] = 'Binary' then
          begin
            if RegType = 'hex:' then
            begin
              StringGrid6.Cells[3, StringGrid6.RowCount - 1] :=
                ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 2],
                AnsiPos('=', Memo1.Lines.Strings[X + 2]) - 1), '"', '');
              StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
                ReplaceStr(AnsiRightStr(Memo1.Lines.Strings[X + 2],
                Length(Memo1.Lines.Strings[X + 2]) - Length(StringGrid6.Cells[3,
                StringGrid6.RowCount - 1]) - 7), ',', ' ');
              repeat
                if AnsiPos('\', Memo1.Lines.Strings[X + 2]) <> 0 then
                begin
                  X := X + 1;
                  StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
                    StringGrid6.Cells[4, StringGrid6.RowCount - 1] +
                    ReplaceStr(Memo1.Lines.Strings[X + 2], ',', ' ');
                end;
              until AnsiPos('\', Memo1.Lines.Strings[X + 2]) = 0;
              StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
                ReplaceStr(StringGrid6.Cells[4, StringGrid6.RowCount - 1],
                ' \ ', '');
            end
            else
            begin
              StringGrid6.Cells[3, StringGrid6.RowCount - 1] :=
                ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 2],
                AnsiPos('=', Memo1.Lines.Strings[X + 2]) - 1), '@', '');
              StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
                ReplaceStr(AnsiLeftStr(AnsiRightStr(Memo1.Lines.Strings[X + 2],
                Length(Memo1.Lines.Strings[X + 2]) - Length(StringGrid6.Cells[3,
                StringGrid6.RowCount - 1]) - 6),
                Length(AnsiRightStr(Memo1.Lines.Strings[X + 2],
                Length(Memo1.Lines.Strings[X + 2]) - Length(StringGrid6.Cells[3,
                StringGrid6.RowCount - 1]) - 3)) - 1), ',', ' ');
              repeat
                if AnsiPos('\', Memo1.Lines.Strings[X + 2]) <> 0 then
                begin
                  X := X + 1;
                  StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
                    StringGrid6.Cells[4, StringGrid6.RowCount - 1] +
                    ReplaceStr(Memo1.Lines.Strings[X + 2], ',', ' ');
                end;
              until AnsiPos('\', Memo1.Lines.Strings[X + 2]) = 0;
              StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
                ReplaceStr(StringGrid6.Cells[4, StringGrid6.RowCount - 1],
                ' \ ', '');
            end;
          end;
        end;
        X := X + 1;
        if Memo1.Lines.Strings[X + 2] = '' then
          X := X + 1;
      until Memo1.Lines.Strings[X + 2] = '';
    end;
  end;
 end;

Last edited by Razor12911; 10-01-2014 at 08:28.
Reply With Quote
The Following 5 Users Say Thank You to Razor12911 For This Useful Post:
78372 (21-11-2019), oltjon (10-01-2014), pakrat2k2 (10-01-2014), riodsa123 (10-01-2014), y_thelastknight (10-01-2014)
Sponsored Links