📚 OpenRCE is preserved as a read-only archive. Launched at RECon Montreal in 2005. Registration and posting are disabled.








Flag: Tornado! Hurricane!

 Forums >>  Target Specific - General  >>  GetPrivateProfileString: how it works?

Topic created on: September 7, 2009 00:57 CDT by fundoo .

I was analysing a program that uses GetPrivateProfileStringA API to read key value from an ini file. When I tried to debug, I didnt find any calls going into kernel32.dll:CreateFileA or kernel32.dll:ReadFile.

Can someone help me to understand how GetPrivateProfileStringA API gets the desired values?

Regards,
fundoo

  dennis     September 7, 2009 02:40.24 CDT
hi,

the GetPrivateProfileString() function doesn't need a file handle to be passed to, it just opens the file itself (check last param of the API function, first push in the disassembly respectively: http://msdn.microsoft.com/en-us/library/ms724353(VS.85).aspx)

If you were looking for how CreateFile() works internally, you might want to have a look at its callchains (https://www.openrce.org/reference_library/win32_call_chains/XPSP2/KERNEL32/GetPrivateProfileStringA) or disassemble it yourself.
If you disassemble it yourself, you can see the function calling: BaseDllReadWriteIniFile() -> BaseDllReadWriteIniFileOnDisk() -> BaseDllOpenIniFileOnDisk() -> NtOpenFile() and NtReadFile()

  fundoo     September 7, 2009 03:32.00 CDT
hi Dennis,

Thanks for your quick reply. Actually while debugging it, I could find CrateFile getting called for the ini file. Another question why cant I see BaseDllReadWriteIniFile, BaseDllReadWriteIniFileOnDisk etc. in my kernel32.dll? :-(

  dennis     September 7, 2009 13:30.54 CDT
hi,

you probably haven't loaded any symbols for kernel32.dll if you can't see BaseDllReadWriteIniFile() and the like. But putting a breakpoint on NtOpenFile() could do the trick if you're debugging the application.

  fundoo     September 7, 2009 22:07.05 CDT
Thanks a lot for your inputs. It really helped.

Note: Registration is required to post to the forums.

There are 31,328 total registered users.


Recently Created Topics
[help] Unpacking VMP...
Mar/12
Reverse Engineering ...
Jul/06
let 'IDAPython' impo...
Sep/24
set 'IDAPython' as t...
Sep/24
GuessType return une...
Sep/20
About retrieving the...
Sep/07
How to find specific...
Aug/15
How to get data depe...
Jul/07
Identify RVA data in...
May/06
Question about memor...
Dec/12


Recent Forum Posts
Finding the procedur...
rolEYder
Question about debbu...
rolEYder
Identify RVA data in...
sohlow
let 'IDAPython' impo...
sohlow
How to find specific...
hackgreti
Problem with ollydbg
sh3dow
How can I write olly...
sh3dow
New LoadMAP plugin v...
mefisto...
Intel pin in loaded ...
djnemo
OOP_RE tool available?
Bl4ckm4n


Recent Blog Entries
halsten
Mar/14
Breaking IonCUBE VM

oleavr
Oct/24
Anatomy of a code tracer

hasherezade
Sep/24
IAT Patcher - new tool for ...

oleavr
Aug/27
CryptoShark: code tracer ba...

oleavr
Jun/25
Build a debugger in 5 minutes

More ...


Recent Blog Comments
nieo on:
Mar/22
IAT Patcher - new tool for ...

djnemo on:
Nov/17
Kernel debugger vs user mod...

acel on:
Nov/14
Kernel debugger vs user mod...

pedram on:
Dec/21
frida.github.io: scriptable...

capadleman on:
Jun/19
Using NtCreateThreadEx for ...

More ...


Imagery
SoySauce Blueprint
Jun 6, 2008

[+] expand

View Gallery (11) / Submit