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

132 Views Asked by At

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")
1

There are 1 best solutions below

0
On BEST ANSWER

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

It seems that angr doesn't support PDB.