![]() |
Today I tried to unpack a DLL and use Scylla, but it did not read its OEP from file/memory.
It seems that Scylla does not read DLL OEP in case of DLL Unpacking. Am I right? |
@Newbie_Cracker
I don't get it. You need to find the OEP yourself? @sendersu I don't think this is a problem. I will think about it. It is because Scylla doesnt pay attention to the api order (like imprec). Scylla is using a different algorithm. @ahmadmansoor here: https://github.com/NtQuery/Scylla |
Quote:
Imprec does the same for DLLs, but Scylla does not. It seems that it reads the ImageBase and ImageSize from memory (I haven't debugged it to check), but it does not read the OEP from the disk/memory. |
just one thing pls upload the distorm 3.1 folder which u use .
I can't access it . is there a problem to compile it with v10 instead of v9.0 of VS 2010 Thanks |
where do these new version come from? They are not mentioned on t4u, Scylla's home.
|
deepzero, you can get them in t4u download area
|
Quote:
I updated the project files: https://github.com/NtQuery/Scylla/commit/133a8fac409940012ee97d46d4955203bf4421bb It should work with Visual Studio 2010. I compile it with platform toolset v90 to get WIN XP SP0/1 support. If you compile it with v10, you can execute it only on XP SP2+ @Newbie_Cracker OK thx, I added it. See attachment. |
1 Attachment(s)
ahmadmansoor had a nice idea for a new IAT search algorithm. It seems that it is very accurate after some tweaks, but takes a little bit longer depending on your computer.
Use the option "advanced iat search" and test it. If you like to support this project, BTC Address: 1GmVrhWwUhwLohaCLP4SKV5kkz8rd16N8h Code:
Version 0.9.2 |
new options added
Quote:
|
1 Attachment(s)
Quote:
Direct import scanner fix methods: - Normal: Patch memory with jmp/call only - Universal: Works with everything, creates a jump table in the scylla section, watch for relocation information in the log file I also found some weird thing in Windows 7 x64. I don't know yet why this happens: Quote:
|
The 0.9.4 betra behaved strange on my latest attempts.
On simple unpackmes the resulted dump was invalid.... I home that 0.9.4 final does not have that behaviour. |
Quote:
but it is limited with some Protector ,in other it is Difficult to handle it . Let take the Themida/Winlicense : through the unpacked rutine ,it pass through IAT Table rebuild which write the API to the file .here it decide to write the Quote:
Quote:
pls check this Image : http://postimg.org/image/6fzu4kr8v/ and u will see what I was talking about .I have write a lot of tut on rebuild IAT for Themedi I can send it to u and through this tut u will see when and where the nop is written . and so on for other Protector ,which each one his privacy . Quote:
Thanks for ur great work ,pls keep up. |
@giv
feel free to report bugs. @ahmadmansoor Try the "universal" direct import fixer (enable in options). It will work with Themida and any other protector. I don't think I can give an example. It is still weird. It has probably something to do with this https://forum.tuts4you.com/topic/34548-scylla-version-announcements/#entry159332 |
Quote:
Quote:
|
Quote:
|
Lol .... my friend I have disable the "normal" fixer too.
I have use the default option when run Scylla first time . check picture http://postimg.org/image/umncnodiv/ |
Quote:
|
I think I miss something ,so u keep the same size of (jmp or Call) and not make any changes
Quote:
|
I change the jmp destination to a jmp table.
|
1.Scylla should have option to use PE Header of module on disk just like imprec .
right now, scylla read the pe header from memory and in some case the export directory is destroy make scylla crash. You could try some target using cryengine sdk such as Warface to get this case/. 2. About apphelp.dll, we could resolve it using plugin to handle it. |
i think scylla is always interested in crash reports, no matter why they happened. :)
|
Some feedback
1. It does not remember the last folder used to store dump/fix, but always start from the module home folder. 2. It keeps separate adjacent chunks of functions related to the same module. 3. For dump naming would be better to follow ImpRec behavior: default dump name is module name + suffix. Feature request + Add import manually. Now it can be done using XML editing, but need to recalc offsets, ordinals, etc. + Single -Dump & Fix- button :) |
1 Attachment(s)
Quote:
About scylla crash, I had found that the function ApiReader::parseExportTable is parsing export not correct in some case, the way of calculating functionName = (char*)(addressOfNamesArray[i] + deltaAddress) is not right if the address of names in the differ memory than the exportbuffer cover. |
Quote:
Quote:
Quote:
GetProcAddress points to function rva FFF6 from apphelp.dll and this function address is NOT exported by apphelp.dll. This is my problem. @Syoma Thanks for the suggestions, I will fix that. |
Quote:
1.trace into the apphelp.dll function code then you'll get the correct api function by watching some special call,jmp such as call eax, call [eax+const], call [ecx+const], jmp eax. 2. Using debuging symbol of apphelp then we'll get the simillar correct name of api. I got the same problem with aclayers.dll, but seem it's hard to make a tracer for that. Seem the best way is to hard-code the address value for these dll. |
I know this is not a good Idea or stupid Idea ,but for unpacker when he work on unpack he can do this :
Quote:
|
New version
Quote:
I cannot reproduce the crash, tested with crysis and far cry. |
Quote:
2.I'll try to give you the examples about the crash. |
There was a bug with virtual devices...
|
Quote:
|
1 Attachment(s)
Windows doesn't handle virtual devices like it should :(
This should work now, but the solution is bad... |
1 Attachment(s)
Here's the samples for scylla crash bug. Use Ollydbg2 load the scylla_.exe, then you'll stop at EP. Now using scylla to process the scylla_.exe module and scylla will crash. Hope this will help you :D
|
Hi Carbon :
about Computer_Angel target don't care about it, scylla is the best and it Does not need any fix for handle virtual devices. this sample is an tricky Target :rolleyes: it write false size for IMAGE_EXPORT_DIRECTORY which make it very very big so can't handle it with bufferExportTable = new BYTE[readSize]; so Computer_Angel it is as an anti scylla (or other IAT re builder ) technique ;) . Quote:
Computer_Angel :cool: |
Ahmadmansoor , i get this problem when unpack warface game.
|
1 Attachment(s)
Thanks for the file Computer_Angel and thanks for the help ahmadmansoor.
I added an option to read the export table always from disk. This is slower than reading it from the target process. I guess this is a rare case, so people should only enable it if needed. Quote:
|
Very good release )
Could you please collapse all nodes after chunks merge at the end? Also, if possible add option to set image header flag "relocations stripped" on Dump. May be also option to automatically save tree on Dump as ModuleName-Tree.xml |
|
Quote:
|
Yes, I am sure it is mistake. The missed import entries are data-related, not functions. Like __declspec(dllexport) int i; and the same for structures instances.
Also, the same problem with msvcr90.dll import 150 __CppXcptFilter dd ? 154 _adjust_fdiv dd ? // <<----- this one was missed in chunk 158 _amsg_exit dd ? I do not use Olly. So, not sure what you asking for. |
1 Attachment(s)
Thanks, I forgot that data exports exist... this should fix it.
|
| All times are GMT +8. The time now is 04:41. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2026, vBulletin Solutions, Inc.
Always Your Best Friend: Aaron, JMI, ahmadmansoor, ZeNiX