ultimate cause
ultimate cause

Reputation: 2294

angr - project.loader.find_symbol("main") does not works on Windows

I have very simple C code - compiled on MSVC using clang++ compiler. When I am running it under angr environment - it simply does not finds main() function, while it can do so for other things like strcmp etc. Also, the same program when run under linux (g++) works with no issues.

Additionally, I could see main() symbol in dumpbin.exe, gdb, x64dbg etc.

path_to_binary = "D:\\angr_project\\angr training\\angr_ctf\\00_angr_find\\00_angr_find.exe"  # :string
  print("Started execution\n")
  project = angr.Project(path_to_binary, load_options={'auto_load_libs': False})
  main_fn = project.loader.find_symbol('main')
  if main_fn:
      print("main found")
  else:
      print("main not found")

Upvotes: 0

Views: 296

Answers (1)

couyoh
couyoh

Reputation: 313

See the cle.pe's get_symbol source code. It gets from the export table.

It seems that angr doesn't support PDB.

Upvotes: 1

Related Questions