it-swarm.com.de

Wie kann man das Popup "Entwickler-Erweiterungen deaktivieren" deaktivieren?

Kürzlich hat Google dieses nervige Popup zum Dev-Kanal hinzugefügt.

Jemand hat hier geantwortet ( Deaktivieren Sie die Erweiterungen des Entwicklermodus in Chrome ), um die chrome.dll zu bearbeiten, um das Popup zu entfernen.

Die dort beschriebene Methode scheint jedoch nicht mehr zu funktionieren.

Außerdem wäre es schön, ein Batch-Skript zu haben, das patches chrome.dll bei Google Push ein neues Update bereitstellt.

BEARBEITEN: Offen für neue Hacks, da wOxxOm die Verwendung seines nützlichen Skripts eingestellt hat (die manuelle Methode scheint ebenfalls veraltet zu sein)

40
Emerson

Wenn Sie dev/canary builds nicht verwenden können, können Sie das Popup am einfachsten entfernen, indem Sie Ihre Erweiterung packen und sie dann mithilfe von Gruppenrichtlinien auf die Positivliste setzen, wie hier beschrieben: https://stackoverflow.com/a/38011386/991321

1
Emerson

O patch não funciona mais em novas construções do Google Chrome e, portanto, arquivado no snippet abaixo.

Basta usar o Chrome Canary, que nãora o aviso.

Ou você pode aplicá-lo manualmente usando HIEW :

  1. vollständige Version anzeigen: Chrome pressionandoCtrlShiftQDer Encrar Qualquer-Prozess chrome.exe na guia Processesdo Gerenciador de Tarefas do Windows (ist eine Segunda-Guia, keine Guia-Padrão).
  2. aberto chrome.dll sie sehen
  3. pressioneEnterfür Vista
  4. pressioneF7, cole ExtensionDeveloperModeWarningno primeiro campo de entrada, pressioneEnter
  5. pressioneF3Para entrar no modo de edição
  6. tipo 00
  7. pressioneF9salvar
  8. pressioneLeftfür den Cursor 00
  9. pressioneF6Für eine Referenz gefunden

    enter image description here

  10. beschaffen Sie sich cmp eax,3 oder cmp eax,2 in der Nähe der nächstgelegenen Cima e para Baixo

    enter image description here

  11. navegar o cursor usandoUpeDownpara o código binário dessa linha
  12. pressioneF3Para entrar no modo de edição
  13. navegar o cursor usandoLefteRightpara 03 ou 02 no código dessa linha
  14. tipo 09
  15. pressioneF9salvar
  16. Wählen Sie eine Vista, eine Windows-Version oder eine Chrome-Version.
<# :
@echo off
copy/b "%~f0" "%temp%\%~n0.ps1" >nul
powershell -v 2 -ep bypass -noprofile "%temp%\%~n0.ps1" "'%cd% '" "'%~1'"
del "%temp%\%~n0.ps1"
echo: & pause
exit /b
#>
param([string]$cwd='.', [string]$dll)

function main {
  write-Host -f white -b black `
    "Chrome 'developer mode extensions' warning disabler 2017.12.08"
  $pathsDone = @{}
  if ($dll -and (gi -literal $dll)) {
    doPatch "DRAG'n'DROPPED" ((gi -literal $dll).directoryName + '\')
    exit
  }
  doPatch 'CURRENT DIRECTORY' ((gi -literal $cwd).fullName + '\')
  ('HKLM', 'HKCU') | %{ $Hive = $_
    ('', '\Wow6432Node') | %{
      $key = "${Hive}:\SOFTWARE$_\Google\Update\Clients"
      gci -ea silentlycontinue $key -r | gp | ?{ $_.CommandLine } | %{
        $path = $_.CommandLine -replace '"(.+?\\\d+\.\d+\.\d+\.\d+\\).+', '$1'
        if (!$pathsDone[$path.toLower()]) {
          doPatch REGISTRY $path
          $pathsDone[$path.toLower()] = $true
        }
      }
    }
  }
}

function doPatch([string]$pathLabel, [string]$path) {
  $dll = Join-Path $path chrome.dll
  if (!(Test-Path -literal $dll)) {
    return
  }
  ''
  $localAppData = [Environment]::GetFolderPath('LocalApplicationData')
  "$pathLabel $((split-path $dll).Replace($localAppData, '%LocalAppData%'))"

  "`tREADING Chrome.dll..."
  $bin = [IO.BinaryReader][IO.File]::OpenRead($dll)
  $bytes = $bin.ReadBytes(1MB)

  # process PE headers
  $BC = [BitConverter]
  $coff = $BC::ToUInt32($bytes,0x3C) + 4
  $is64 = $BC::ToUInt16($bytes,$coff) -eq 0x8664
  $opthdr = $coff+20
  $codesize = $BC::ToUInt32($bytes,$opthdr+4)
  $imagebase32 = $BC::ToUInt32($bytes,$opthdr+28)

  # patch the flag in data section
  $bin.BaseStream.Position = $codesize
  $data = $BC::ToString($bin.ReadBytes($bin.BaseStream.Length - $codesize))
  $bin.Close()
  $flag = 'ExtensionDeveloperModeWarning'
  $stroffs = $data.IndexOf($BC::ToString($flag[1..99]))
  if ($stroffs -lt 0) {
    write-Host -f red "`t$flag not found"
    return
  }
  if ($data.substring($stroffs-3, 2) -eq '00') {
    write-Host -f darkgreen "`tALREADY PATCHED"
    return
  }
  $stroffs = $stroffs/3 - 1 + $codesize

  $centbrowser = $data.indexOf($BC::ToString('CentBrowser'[0..99])) -gt 0

  $EA = $ErrorActionPreference
  $ErrorActionPreference = 'silentlyContinue'
  $exe = join-path (split-path $path) chrome.exe
  while ((get-process chrome -module | ?{ $_.FileName -eq $exe })) {
    forEach ($timeout in 15..0) {
      write-Host -n -b yellow -f black `
        "`rChrome is running and will be terminated in $timeout sec. "
      write-Host -n -b yellow -f darkyellow "Press ENTER to do it now. "
      if ([console]::KeyAvailable) {
        $key = $Host.UI.RawUI.ReadKey("AllowCtrlC,IncludeKeyDown,NoEcho")
        if ($key.virtualKeyCode -eq 13) { break }
        if ($key.virtualKeyCode -eq 27) { write-Host; exit }
      }
      sleep 1
    }
    write-Host
    get-process chrome | ?{
      $_.MainWindowHandle.toInt64() -and ($_ | gps -file).FileName -eq $exe
    } | %{
      "`tTrying to exit gracefully..."
      if ($_.CloseMainWindow()) {
        sleep 1
      }
    }
    $killLabelShown = 0
    get-process chrome | ?{
      ($_ | gps -file | select -expand FileName) -eq $exe
    } | %{
      if (!$killLabelShown++) {
        "`tTerminating background chrome processes..."
      }
      stop-process $_ -force
    }
    sleep -milliseconds 200
  }
  $ErrorActionPreference = $EA

  $bytes = [IO.File]::ReadAllBytes($dll)
  $bytes[$stroffs] = 0
  "`tPATCHED $flag flag"

  # patch the channel restriction code for stable/beta
  $rxChannel = '(?!<41-)83-F8-(?:03-7D|02-7F|02-0F-8F)'
  # old code: cmp eax,3; jge ...
  # new code: cmp eax,2; jg ... (jg can be 2-byte)
  function patch64 {
    $patterns = @(
      "(?<ch>$rxChannel)-.{1,100}-(?<flag>48-8D-)"
      # 48-8D-15-F3-78-87-00 first flag ref
      # 48-8D-15-A4-78-87-00 second flag ref
      "(?<flag>4[8C]-8D-).{9}(.{6}).{100,600}4[8C]-8D-.{9}\1.{600,2000}(?<ch>$rxChannel)"
      "84-C0.{18,48}(?<ch>$rxChannel)-.{30,60}84-C0"
    )
    forEach ($pattern in $patterns) {
      $pos = 0
      $rx = [regex]$pattern
      $patternDisplay = $pattern -replace '^(.{40}).+', '$1'
      write-Host -n -f darkgray "`tLooking for $patternDisplay"
      do {
        $m = $rx.match($code, $pos)
        write-Host -n -f darkgray .
        if (!$m.success) { break }
        $chanpos = $searchBase + $m.groups['ch'].index/3 + 2
        $pos = $m.groups['flag'].index + $m.groups['flag'].length
        $offs = $BC::ToUInt32($bytes, $searchBase + $pos/3+1)
        $diff = $searchBase + $pos/3+5+$offs - $stroffs
        #write-Host ("`n{0,16:x}`t{1}" -f ($offs, $diff))
      } until ($diff -ge 0 -and $diff -le 6000 -and $diff % 256 -eq 0)
      write-Host
      #write-Host ("{0,16:x}" -f ($searchBase + $pos/3))
      if ($m.success) { break }
      $chanpos = 0
    }
    $chanpos
  }
  function patch86 {
    $flagOffs = [uint32]$stroffs + [uint32]$imagebase32
    $flagOffsStr = $BC::ToString($BC::GetBytes($flagOffs))
    #write-Host $flagOffsStr
    $variants = "(?<ch>$rxChannel-.{1,300})-(68-(?<flag>`$1-.{6}`$2.{100,200})){2}",
                "68-(?<flag>`$1-.{6}`$2).{300,500}E8.{12,32}(?<ch>$rxChannel)",
                "E8.{12,32}(?<ch>$rxChannel).{300,500}68-(?<flag>`$1-.{6}`$2)"
    forEach ($variant in $variants) {
      $pattern = $flagOffsStr -replace '^(..)-.{6}(..)', $variant
      $patternDisplay = $pattern -replace '^(.{40}).+', '$1'
      write-Host -f darkgray "`tLooking for $patternDisplay..."
      $minDiff = 65536
      foreach ($m in [regex]::matches($code, $pattern)) {
        $maybeFlagOffs = $BC::toUInt32($bytes, $searchBase + $m.groups['flag'].index/3)
        $diff = [Math]::abs($maybeFlagOffs - $flagOffs)
        #write-Host ("`n{0,16:x}`t{1}" -f ($maybeFlagOffs, $diff))
        if ($diff % 256 -eq 0 -and $diff -lt $minDiff) {
          $minDiff = $diff
          $chanpos = $searchBase + $m.groups['ch'].index/3 + 2
        }
      }
    }
    $chanpos
  }
  $passes = 3
  foreach ($pass in $passes..1) {
    if ($centbrowser) { break }
    $searchBase = [int]($codesize/$passes * ($pass-1))
    $code = $BC::ToString($bytes, $searchBase, [int]($codesize/$passes) + 2000)
    $chanpos = if ($is64) { patch64 } else { patch86 }
    if ($chanpos) { break }
    $searchBase = 0
  }
  if ($chanpos) {
    #write-Host ('{0:x}' -f $chanpos)
    $bytes[$chanpos] = 9
    "`tPATCHED Chrome release channel restriction"
  } elseif (!$centbrowser) {
    write-Host -f red "`tUnable to find the channel code, try updating me"
    write-Host -f red "`thttp://stackoverflow.com/a/30361260"
    return
  }

  "`tWriting to a temporary dll..."
  [IO.File]::WriteAllBytes("$dll.new",$bytes)

  "`tBacking up the original dll..."
  move -literal $dll "$dll.bak" -force

  "`tRenaming the temporary dll as the original dll..."
  move -literal "$dll.new" $dll -force

  write-Host -f green "`tDONE.`n"
  [GC]::Collect()
}

main
# DevWarningPatch.bat Dec 08, 2017 
**for 32/64-bit Chrome 44.0.2398.0 and newer, stable/beta/dev/canary**

1. Save the code to `DevWarningPatch.bat` somewhere  
  (on the Desktop, for example or in the folder with chrome.dll)
2. Exit Chrome.  
  Or let the script close it including its hidden background processes.
3. Rightclick the batch file and run it as administrator: it will find & patch all applicable chrome.dll  
  Alternatively you can drag'n'drop chrome.dll onto the batch file

**If the pop-up message occurs after running the batch file** try renaming the file `chrome.dll.bak` to `chrome.dll` inside Chrome's application folder, then run the batch file again.
88
wOxxOm

Ich füge hier die offiziellen Wege hinzu, um dieses Problem zu lösen, und ich weiß, dass sie nicht optimal sind, aber es macht Sinn, dass diese Lösungen hier vorhanden sind.

Die erste und komplizierteste Lösung besteht darin, ein Google Store Account zu erstellen und alle Schritte zur Aktivierung durchzugehen. Damit können Sie Ihr extension package hochladen und Private beibehalten, sodass Sie den Link zu diesem Paket für die Installation freigeben können Auf diese Weise wird diese Nachricht nie angezeigt, da die Erweiterung vom Google-Team genehmigt wurde und sicher ist.

Die zweite Option ist das Herunterladen des Chrome Dev Browser, linked Here , es wird nicht auf dem Bildschirm angezeigt, dass Sie das Dev Channel herunterladen. Sie müssen darauf vertrauen, dass dies geschieht. Diese Version des Browsers arbeitet mit der offiziellen Version parallel, so dass Sie nichts deinstallieren müssen und alle Einstellungen getrennt sind, so dass es wirklich wie ein anderer Browser aussieht.

Ich verwende Version 64 und löste mein Problem mit der Erweiterung.

2
Zorkind