tazBRC
March 4th, 2010, 05:48
I'm unpacking a DLL protected by Crypkey packer and what I did is the following:
1) Dumped the entire DLL, with a .text section full of int 3 (CC).
2) Find the nano table in ck*.tmp process and create an OK .text section
3) Merge this OK section on dumped file.
4) Import this .text section on current running process to restore IAT
4) Used IMPREC to restore the import table.
But here comes my problem. The import table is not redirecting to the real function address entry, for example
The EBX value is: 00058A68
The real GetProcessHeap Address is: 7C80AC61 in kernel32.dll
Actually, in the import table, its writen 00058A68 for this function, when I try to manually write the real address on dll, I get an invalid dll file.
Anybody know how can I solve this?
Thanks in advance
1) Dumped the entire DLL, with a .text section full of int 3 (CC).
2) Find the nano table in ck*.tmp process and create an OK .text section
3) Merge this OK section on dumped file.
4) Import this .text section on current running process to restore IAT
4) Used IMPREC to restore the import table.
But here comes my problem. The import table is not redirecting to the real function address entry, for example
Code:
10017E37 |. 8B1D 2CF20210 MOV EBX,DWORD PTR DS:[<&kernel32.GetProcessHeap>]
10017E3D |. BF 94000000 MOV EDI,94
10017E42 |. 57 PUSH EDI
10017E43 |. 6A 00 PUSH 0
10017E45 |. FFD3 CALL EBX ; [GetProcessHeap
The EBX value is: 00058A68
The real GetProcessHeap Address is: 7C80AC61 in kernel32.dll
Actually, in the import table, its writen 00058A68 for this function, when I try to manually write the real address on dll, I get an invalid dll file.
Anybody know how can I solve this?
Thanks in advance