News for hackers. Stuff that matters.
Re:WinDepends – A Rewrite of the Dependency Walker by Dwedit on Saturday November 30, 2024 @05:54PM (#42284647)
Great! Dependency Walker has been nonfunctional since Windows introduced API sets.
Re:WinDepends – A Rewrite of the Dependency Walker by mistagiggles on Saturday November 30, 2024 @06:03PM (#42284701)
There is also this: https://github.com/lucasg/Dependencies Similar project for replacing the old dependency walker tool
Re:WinDepends – A Rewrite of the Dependency Walker by blb2 on Saturday November 30, 2024 @06:07PM (#42284728)
This is the one I've been using and it's decent. I'm just worried that there hasn't been much activity in the repo and fear it's abandoned.
Re:WinDepends – A Rewrite of the Dependency Walker by HexDecOctBin on Saturday November 30, 2024 @06:14PM (#42284770)
I have been using this fork (https://github.com/lhak/Dependencies).

But I hate how this software comes with dozens of DLLs. I like to chuck these tools in sa single directory, and this is one that I have to put in a separate folder. DependencyWalker was better in this regard.

Re:WinDepends – A Rewrite of the Dependency Walker by samiv on Sunday December 01, 2024 @06:47AM (#42287903)
why not just use the original dependency walker then? It's minimal and if I remember correctly it's all in a self contained executable.
Re:WinDepends – A Rewrite of the Dependency Walker by HexDecOctBin on Sunday December 01, 2024 @08:33AM (#42288370)
It doesn't work on modern Windows (due to SxS IIRC)
Re:WinDepends – A Rewrite of the Dependency Walker by Dwedit on Sunday December 01, 2024 @11:56AM (#42289321)
It's API sets that broke it, not SxS.

You see these as the program trying to import nonexistent DLL files that start with the name "api-ms-win-". Dependency Walker can't handle those imports at all, it only deals with real DLL files.

Re:WinDepends – A Rewrite of the Dependency Walker by sirjaz on Saturday November 30, 2024 @06:24PM (#42284814)
This is awesome! I hope this doesn't get abandoned.
Re:WinDepends – A Rewrite of the Dependency Walker by pjmlp on Saturday November 30, 2024 @06:29PM (#42284842)
I never understood why those responsible for Windows SDK dropped Dependency Walker, instead of updating to the new Windows ways of dynamic libraries.

Most certainly they keep having similar tooling in Redmond.

Re:WinDepends – A Rewrite of the Dependency Walker by emmanueloga_ on Saturday November 30, 2024 @10:24PM (#42285924)
I suspect there were no career improvement opportunities behind the effort, simple as that.
Re:WinDepends – A Rewrite of the Dependency Walker by forrestthewoods on Sunday December 01, 2024 @05:18PM (#42291135)
> instead of updating to the new Windows ways of dynamic libraries.

What does this mean?

Re:WinDepends – A Rewrite of the Dependency Walker by pjmlp on Monday December 02, 2024 @02:26AM (#42293899)
API Sets, SxS manifests, Visual C++ linker delay loading, .NET Assembly loading and related fusion cache, UWP sandbox loading, are some examples of changes the original dependency walker isn't capable to handle.
Re:WinDepends – A Rewrite of the Dependency Walker by bhouston on Saturday November 30, 2024 @07:19PM (#42285080)
Nice! I loved and relied on WinDepends back in the day.
Re:WinDepends – A Rewrite of the Dependency Walker by optimiz3 on Saturday November 30, 2024 @11:24PM (#42286183)
Nice project, just as a challenge / piece of feedback - most of the time you don't actually need to have a C backend for this type of project. The challenge is to get all the P/Invoke signatures and struct declarations / pointer walking correct on .Net. The benefit being a single managed EXE and no need for cross process communication and the edge cases it brings.

(Source: Have built a full SCSI interop layer in .Net to do low level CD ripping, full with native pointer walking and all. Have also written tools to walk the PEB (process environment block) in .Net w/ no native backends.)

Re:WinDepends – A Rewrite of the Dependency Walker by neonsunset on Sunday December 01, 2024 @01:36AM (#42286681)
If you do have headers, you don't have to write the bindings by hand: https://github.com/dotnet/ClangSharp?tab=readme-ov-file#gene...

Also because this is Windows, there is https://github.com/microsoft/CsWin32 already (and adjacent libraries) which rely on the same generator.

Re:WinDepends – A Rewrite of the Dependency Walker by pjmlp on Sunday December 01, 2024 @03:29AM (#42287091)
Which is the reason that to this day I remain a big C++/CLI fan.

It is still much easier than dealing with P/Invoke and COM from .NET code.

Create a nice wrapper, exposing C# compatible types and we're done.

In regards to COM, not even the CCW/RCW replacement is as developer friendly as VB 6 or Delphi.

I have some hopes that Secure Future Initiative will finally give the spotlight to .NET on Windows, that Windows team keeps pushing away, unlike what happens on Apple and Google platforms.

Re:WinDepends – A Rewrite of the Dependency Walker by exceptione on Sunday December 01, 2024 @07:19AM (#42288048)
What do you think about the tooling that @neonsunset mentioned: https://news.ycombinator.com/item?id=42286681
Re:WinDepends – A Rewrite of the Dependency Walker by pjmlp on Sunday December 01, 2024 @08:49AM (#42288452)
It helps, but when one has enough C++ knowledge, I still consider C++/CLI a better solution instead of yet another tool, that might not understand everything.

Now if doing cross platform code, C++/CLI is naturally not an option.

Re:WinDepends – A Rewrite of the Dependency Walker by cjbgkagh on Sunday December 01, 2024 @07:57AM (#42288222)
The big conflict between .NET and windows is because the windows team correctly understood that if you give people a way to use their programs without the rest of the windows interface then they will do that and question why they really need Windows at all. Windows 8 was about giving people more Windows in their Windows with an attempt to push more functionality away from programs and into the operating system - it was a total disaster. Microsoft internally had a managed OS called Midori which worked great. But we can’t have nice things because the people who have a monopoly wish to maintain that monopoly, so while replacing more of OS functionality with dotnet makes perfect sense I think it’s unlikely to happen for this reason.

I’ve been out of Microsoft for a while and don’t really pay much attention anymore but I heard a rumor that the Windows team was moved under Azure. This would be a weird twist of fate since it was Windows that forced Scott Gu to kill Silverlight, a dotnet in the browser. The browser in effect being a competing OS.

I asked a windows designer why they did something stupid and their response was the design change was in order to be familiar to people who are unfamiliar with Windows, they’re focused on growth and they want to bring in mobile and apple users. I tried to describe how stupid that was since Microsoft is already a zoo of all previous Microsoft design philosophies and now they are introducing addition 3rd party designs into that mix. Understandably the people who make such dumb decisions in the first place are incapable of understanding why it is a dumb decision.

In my view the future of dotnet is on Linux, I sell software to old lagging organizations, and for them the push into the browser was about getting away from windows, effectively treating the browser as an OS.

Re:WinDepends – A Rewrite of the Dependency Walker by throwaway2037 on Sunday December 01, 2024 @04:19AM (#42287270)
Is there an equivalent of ldd for Win32?
Re:WinDepends – A Rewrite of the Dependency Walker by MatejKafka on Sunday December 01, 2024 @06:10AM (#42287736)
`dumpbin /dependents` gives similar information. I use the following PowerShell function to get output that's a bit closer to ldd:

  function ldd($ExePath) {
      $Dumpbin = gi "C:\Program Files*\Microsoft Visual Studio\*\*\VC\Tools\MSVC\*\bin\HostX64\x64\dumpbin.exe"
      $Done = $false
      & $Dumpbin /dependents $ExePath
          | ? {$_.StartsWith("  ")}
          | % {$_.Substring(2)}
          | % {if ($Done) {} elseif ($_ -eq "Summary") {$Done = $true} else {$_}}
          | % {if ($_.StartsWith("  ")) {$_.Substring(2)}}
  }
Re:WinDepends – A Rewrite of the Dependency Walker by dgfitz on Sunday December 01, 2024 @08:25AM (#42288339)
This is really neat. Thank you for sharing.
Re:WinDepends – A Rewrite of the Dependency Walker by Dwedit on Sunday December 01, 2024 @11:51AM (#42289299)
There is actual the ldd available on Win32, along with gcc, objdump, etc...

It comes with the mingw or msys suite.

Re:WinDepends – A Rewrite of the Dependency Walker by IshKebab on Sunday December 01, 2024 @12:37PM (#42289554)
Also is there an equivalent to this for Linux?
Re:WinDepends – A Rewrite of the Dependency Walker by secondcoming on Sunday December 01, 2024 @10:46AM (#42288970)
Why does a tool such as this need a server?
Re:WinDepends – A Rewrite of the Dependency Walker by flopsamjetsam on Sunday December 01, 2024 @04:56PM (#42291027)
I thought at first it was a way to share the symbol tables between multiple instances (though you could use memory mapping), but then I read this in the README.md:

> Server is written in C, with no special headers or SDK used.

So maybe it helps them keep the parser simpler? Decouples that part from the GUI in a way they prefer?

Re:WinDepends – A Rewrite of the Dependency Walker by thefourthchime on Sunday December 01, 2024 @02:38PM (#42290216)
In the olden times, the internet was so nerdy if you searched on Altavista for "depends" this tool was the top result.
Re:WinDepends – A Rewrite of the Dependency Walker by MarekKnapek on Sunday December 01, 2024 @02:52PM (#42290304)
There is also this one, but it is no longer maintained. https://github.com/MarekKnapek/DependencyViewer
Re:WinDepends – A Rewrite of the Dependency Walker by DonnyV on Sunday December 01, 2024 @05:38PM (#42291259)
Its kind of crazy that a person outside of Microsoft is doing this. Why is this not supported by the Sysinternals team?