Skip to content

Instantly share code, notes, and snippets.

@adeii
Created November 15, 2025 20:24
Show Gist options
  • Select an option

  • Save adeii/db50b9c737f2f799f9073ddaa02c1b3d to your computer and use it in GitHub Desktop.

Select an option

Save adeii/db50b9c737f2f799f9073ddaa02c1b3d to your computer and use it in GitHub Desktop.
ThunderBird 145 x64 on Win 7 - NOPE!
xul.exe
-------
B8: 06
C0: 06
DD 12 E5 01 49 8D 87 00 00 C0 7F 48 89 44 24 28
4C 89 7C 24 20 4C 89 F9 4C 89 F2 41 B8 01 00 00
00 41 B9 01 00 00 00 FF 15 3C 1B E5 01 89 C5 48 -->
DD 12 E5 01 49 8D 87 00 00 C0 7F 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 31 C0 90 90 90 90 90 90 90 90 89 C5 48
--
55 48 9F 04 49 8D 87 00 00 C0 7F 48 89 44 24 28
4C 89 7C 24 20 4C 89 F9 4C 89 F2 41 B8 01 00 00 -TB145
00 41 B9 01 00 00 00 FF 15 FC 50 9F 04 89 C5 48
--
48 89 50 08 EB 8E CC CC CC CC CC CC CC CC CC CC 41 57 41 56 41 55 41 54 56 57 55 53 48 83 EC 78 ->nope
48 89 50 08 EB 8E CC CC CC CC CC CC CC CC CC CC B8 01 00 00 00 C3 41 54 56 57 55 53 48 83 EC 78
RoGetAgileReference -> CLSIDFromProgID
RtlAddGrowableFunctionTable -> ZwFindAtom
USER32.dll -> USER64.dll
KERNEL32.dll -> KERNEL64.dll
bcryptprimitives.dll -> xcryptprimitives.dll
63 00 6F 00 6D 00 62 00 61 00 73 00 65 00 2E 00 64 00 6C 00 6C 00 ->
6F 00 6C 00 65 00 33 00 32 00 2E 00 64 00 6C 00 6C 00 00 00 00 00 (c.o.m...b.a.s.e -> o.l.e.3.2...d.l.l)
GetThreadDpiAwarenessContext -> GetMonitorInfoW ??
AreDpiAwarenessContextsEqual -> GetMonitorInfoW ??
GetSystemMetricsForDpi -> GetSystemMetrics
GetDpiForWindow -> GetMonitorInfoW
CreateFile2 -> CreateFileW
NtQueryWnfStateData - no alternative! So, ZwFindAtom, NtClose ...
GetQueueStatus -> ??
GetCurrentPackageFamilyName - GetCurrentPackageFullName
GetPointerType -> GetCursorInfo
---
Great - deadLoop!
"DWriteCreateFactory" called from "XUL.DLL" at address 0x000007FECE7785D2 and returned 0x000007FEEC596980 by thread 59.
[USER64.DLL], "KillTimer") called from "XUL.DLL" at address 0x000007FED12AAE1E and returned 0x000007FEDE471FE0 by thread 36.
[USER64.DLL], "GetQueueStatus") called from "XUL.DLL" at address 0x000007FED12AAE1E and returned 0x000007FEDE471DD0 by thread 36.
[USER64.DLL], "PeekMessageW") called from "XUL.DLL" at address 0x000007FED12AAE1E and returned 0x000007FEDE472130 by thread 36.
[USER64.DLL], "KillTimer") called from "XUL.DLL" at address 0x000007FED12AAE1E and returned 0x000007FEDE471FE0 by thread 36.
[USER64.DLL], "GetQueueStatus") ...
D3D11.dll -> CreateDirect3D11DeviceFromDXGIDevice -> D3D11CreateDevice
KERNEL32.dll -> IsWow64Process2 -> IsWow64Process
mozglue.exe
-----------
B8: 06
C0: 06
api-ms-win-core-version-l1-1-1.dll -> version.dll
api-ms-win-core-psapi-l1-1-0.dll -> kernel32.dll
api-ms-win-core-version-l1-1-0.dll -> version.dll
api-ms-win-core-errorhandling-l1-1-1.dll -> kernel32.dll
(api-ms-win-core-handle-l1-1-0.dll -> kernel32.dll)
(api-ms-win-core-memory-l1-1-0.dll -> kernel32.dll)
(api-ms-win-core-file-l1-1-0.dll -> kernel32.dll)
(api-ms-win-core-processthreads-l1-1-0.dll -> kernel32.dll)
api-ms-win-core-libraryloader-l1-2-0.dll -> kernel32.dll
api-ms-win-core-libraryloader-l1-2-1.dll -> kernel32.dll
api-ms-win-core-heap-l2-1-0.dll -> kernel32.dll
api-ms-win-core-realtime-l1-1-0.dll -> kernel32.dll
api-ms-win-core-realtime-l1-1-1.dll -> kernel64.dll
api-ms-win-core-registry-l1-1-0.dll -> kernel32.dll
api-ms-win-core-rtlsupport-l1-2-0.dll -> ntdll.dll
api-ms-win-core-sysinfo-l1-2-0.dll -> kernel32.dll
thunderbird.exe
gkcodecs.dll
nssckbi.dll
nss3.exe
lgpllibs.dll
pingsender.exe
plugin-container.exe
rnp-cli.exe
rnpkeys.exe
WSEnable.exe
-------------------------
B8: 06
C0: 06
b c r y p t p r -- x c r y p t p r
( 62 00 63 00 72 00 79 00 70 00 74 00 70 00 72 00 -- 78 00 63 00 72 00 79 00 70 00 74 00 70 00 72 00 )
IsWow64Process2 -> IsWow64Process
export var WinTaskbarJumpList = {
// We build two separate jump lists -- one for the regular Firefox icon
// and one for the Private Browsing icon
_builder: null,
_pbBuilder: null,
_builtPb: false,
// Is showing jump lists currently blocked, such as when waiting for the user
// to interact with the preonboarding modal?
_blocked: false,
_shuttingDown: false,
_useLegacyBackend: true,
...
startup: async function WTBJL_startup() {
// We do a one-time startup read of the backend pref here because
// we don't want to consider any bugs that occur if the pref is flipped
// at runtime. We want the pref flip to only take effect on a restart.
this._useLegacyBackend = lazy._prefs.getBoolPref(
PREF_TASKBAR_LEGACY_BACKEND
);
// exit if initting the taskbar failed for some reason.
if (!(await this._initTaskbar())) {
return;
}
if (lazy.PrivateBrowsingUtils.enabled) {
tasksCfg.push(privateWindowTask);
}
// Store our task list config data
this._builder._tasks = tasksCfg;
this._pbBuilder._tasks = tasksCfg;
// retrieve taskbar related prefs.
this._refreshPrefs();
// observer for private browsing and our prefs branch
this._initObs();
// jump list refresh timer
this._updateTimer();
if (this._blocked) {
this._builder._deleteActiveJumpList();
}
},
update: function WTBJL_update() {
// are we disabled via prefs? don't do anything!
if (!this._enabled) {
return;
}
if (this._shuttingDown) {
return;
}
if (this._useLegacyBackend) {
// we only need to do this once, but we do it here
// to avoid main thread io on startup
if (!this._builtPb) {
this._pbBuilder.buildListLegacy();
this._builtPb = true;
}
// do what we came here to do, update the taskbar jumplist
this._builder.buildListLegacy();
} else {
this._builder.buildList();
// We only ever need to do this once because the private browsing window
// jumplist only ever shows the static task list, which never changes,
// so it doesn't need to be updated over time.
if (!this._builtPb) {
this._pbBuilder.buildList();
this._builtPb = true;
}
}
},
_shutdown: function WTBJL__shutdown() {
this._builder.updateShutdownState(true);
this._pbBuilder.updateShutdownState(true);
this._shuttingDown = true;
this._free();
},
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment