Quote:
[Originally Posted by Fahr]One more thing; I tried searching this board on any and all combinations of "ImpRec, Unresolved, IAT" but I wasn't really able to find anything worthwhile. I did find some mentions of an Emul plugin, which I can't seem to find anywhere...
Another tutorial on Aspr I read states:
somehow, I don't think that's a good idea 
I THINK I managed to fix some (if not most) of the unresolved calls, but as I said, 7 (or 8, after a new trace) remain unresolved. LaBBa says I should EXECUTE them and see what the results are... this bit has me a bit puzzled - HOW do I execute them? Just breakpoint them in Olly and run the app? I might never find the option in the app which calls to that API...
Thanks,
- Fahr |
Fahr
Here is a list of some of the unresolved calls, one's I have made notes of and some from LaBBa's tut
Aspr notes V1.4??
Redirected calls which cannot be auto resolved!
44B717 6513C4
6513C4 55 PUSH EBP
6513C5 8BEC MOV EBP,ESP
6513C7 5D POP ESP
6513C8 C20400 RET 04
Becomes Kernel32!FreeResource
44B724 65139C
65139C 6A00 PUSH 00
65139E E8B53DFFFF CALL Kernel32!GMHA
6513A3 FF35E46C6500 PUSH DWORD [00656CE4]
6513A9 58 POP EAX
6513AA 8B05F46C6500 MOV EAX, [00656CF4]
6513B0 C3 RET
Becomes Kernel32!GetCommandLineA
44B730 651388
651388 A1E86C6500 MOV EAX, [00656CE8]
65138D C3 RET
Becomes Kernel32!GetCurrentProcess
44B760 65133C
65133C Look it’s GetModuleHandleA
Becomes Kernel32!GetModuleHandleA
44B770 650EE8
650EE8/F0E GetProcAddress
Becomes Kernel32!GetProcAddress
44B7A0 651358
651358 6A00 PUSH 00
65135A E8F93DFFFF CALL Kernel32!GMHA
65135F FF35E46C6500 PUSH DWORD [00656CE4]
651365 58 POP EAX
651366 C3 RET
Becomes Kernel32!GetCommandLineA
44B7D4 6513B4
6513B4 55 PUSH EBP
6513B5 8BEC MOV EBP,ESP
6513B7 8B05F46C6500 MOV EAX, [00656CF4]
6513BD B84508 MOV EAX, [EBP+08]
6513C0 5D POP EBP
6513C1 C20400 RET 04
Becomes Kernel32!LockResource
4753F8 - ED13D0
EDI3D0 6A00 PUSH 00
ED13D2 CALLKernel32!GMHA
ED13D7 FF35E86CED00 PUSH WORD [00ED6CE8]
ED13DD 58 POP EAX
ED13DE 8B05F86CED00 MOV EAX, [00ED6CF8]
ED13E4 C3 RET
Becomes Kernel32!GetCommandLineA
4573FC - ED13C0
ED13C0 55 PUSH EBP
ED13C1 8BEC MOV EBP,ESP
ED13C3 CALLKernel32!GetVersion
ED13C8 A1F46CED00 MOV EAX, [00ED6CF4]
ED13CD 5D POP EBP
ED13CE C3 RET
Becomes Kernel32!GetVersion
457444 - EE9E24
EE9E24 52 PUSH EDX
EE9E25 68369507C0 PUSH WORD [C0079536]
EE9E2A C3 RET
Becomes Kernel32!GlobalUnlock
475464 - ED13B8
ED13B8 A1EC6CED00 MOV EAX, [00ED6CEC]
ED13BD C3 RET
Becomes Kernel32!GetCurrentProcess
4754D0 - ED0EF0
ED0EF0\\ED0FI6
CALL Kernel32!GetProcAddress
RET 08
Becomes Kernel32!GetProcAddress
475518 - ED1360
ED1360\\ED1384
CALL Hernel32!GMHA
RET 04
Becomes Kernel32!GetModuleHandleA
LaBBa explanation!
PUSH EBP
MOV EBP,ESP
MOV EAX,[FF7E24] // DWORD VALUE 001522398
POP EBP
RETN4
EITHER LOCK RESOURCE or FREERESOURCE
PUSH DWORD PTR DS:[FF7E14]
POP EAX
RET
GET VERSION
PUSH EBP
MOV EBP,ESP
MOV EAX,DWORD PTR DS:[FF7E24]
MOV EAX,DWORD PTR SS:[EBP+8]
POP EBP
RETN4
EITHER LOCKRESOURCE or FREERESOURCE
MOV EAX,DWORD PTR DS:[FF7E20]
RETN
GETCURRENTPROCESSID
MOV EAX,DWORD PTR DS:[FF7E18]
RETN
GETCURRENTPROCESS - GETCURRENTPROCESSID works too!
PUSH EBP
MOV EBP,ESP
MOV EAX,DWORD PTR DS:[FF7E24]
POP EBP
RETN4
EITHER LOCKRESOURCE or FREERESOURCE
Another thing regarding
execute them - First I am a relative newcomer to Olly but in SICE you would just do a "dd address" of IAT then set a BPX on what location that address refered to. i.e. if say 654320==01234567 then set BPX on 01234567. The prog will stop at that address all you need to do then is TRACE thru till you find the correct API
There must be a way to do the same in Olly, I suppose you would set a break on memory execution, but I am not sure, like I said Olly is a whole new world to me. Maybe someone else on the board can direct you in the right direction
Just one other thing, if you get a read error when you look at the code in Imprec, make sure the prog has not crashed out. Sometimes when you do an auto trace the prog has gone so you will get a read error if there is nowt there to grab
Regards
/hobferret