Сейчас на форуме: CDK123, sashalogout, bartolomeo, artyavmu (+8 невидимых)

 eXeL@B —› Софт, инструменты —› CodeDoctor plugin for OllyDbg
Посл.ответ Сообщение

Ранг: 1045.7 (!!!!), 31thx
Активность: 0.570
Статус: Участник

Создано: 11 ноября 2009 11:31
· Личное сообщение · #1

History:
0.90 (11.11.2009) - initial public release

______________________________________________________________________ __________

Functions:

1) Deobfuscate

Select instructions in disasm window and execute this command. It will try
to clear the code from junk instructions.

Example:

Original:
00874372 57 PUSH EDI
00874373 BF 352AAF6A MOV EDI,6AAF2A35
00874378 81E7 0D152A41 AND EDI,412A150D
0087437E 81F7 01002A40 XOR EDI,402A0001
00874384 01FB ADD EBX,EDI
00874386 5F POP EDI

Deobfuscated:
00874372 83C3 04 ADD EBX,4

________________________________________________________

2) Deobfuscate - Single Step

This works like previous command, but does one transformation at a time

_______________________________________________________

3) Move NOPs to bottom

Converts this:

00874396 50 PUSH EAX
00874397 90 NOP
00874398 90 NOP
00874399 52 PUSH EDX
0087439A BA 3F976B00 MOV EDX,somesoft.006B973F
0087439F 90 NOP
008743A0 90 NOP
008743A1 90 NOP

to this:

00874396 50 PUSH EAX
00874397 52 PUSH EDX
00874398 BA 3F976B00 MOV EDX,somesoft.006B973F
0087439D 90 NOP
0087439E 90 NOP
0087439F 90 NOP
008743A0 90 NOP
008743A1 90 NOP

Limitations: it breaks all jumps and calls pointing inwards

________________________________________________________

4) Undo / Redo

Undo or Redo last operation (from one of the above functions)

________________________________________________________

5) Retrieve Jumpy function

This will statically parse instructions and follow all jumps. This is useful
for situations, when program jumps here and there and here and there... When
it encounters some instruction, that can't be followed, it stop and copies
all parsed instruction to an allocated place in memory.

Use settings to set some parameters:
Step over calls - if set, it will step over calls, otherwise it will follow them
Step over jccs - dtto, but for Jccs
Deobfuscate - it will deobfuscate instruction, when it encounters Jcc, RET,
JMP reg/exp, CALL reg/exp; useful for multi-branch

Example:

Original:
00874389 /EB 05 JMP SHORT somesoft.00874390
0087438B |43 INC EBX
0087438C |41 INC ECX
0087438D |42 INC EDX
0087438E |EB 07 JMP SHORT somesoft.00874397
00874390 \B8 07000000 MOV EAX,7
00874395 ^ EB F4 JMP SHORT somesoft.0087438B
00874397 C3 RET

Result:
003B0000 B8 07000000 MOV EAX,7
003B0005 43 INC EBX
003B0006 41 INC ECX
003B0007 42 INC EDX
003B0008 C3 RET

Limitations:
- not tested much, buggy
________________________________________________________

6) Rebuild RSRC and Realign

This function has some limited use when unpacking. It opens the debugged file
from disc. Then it retrieves all resources and rebuilds them to one place
(currently it rebuilds them only to original place in exe). Then it realigns file
and saves it under new name.

When is this useful? For example when unpacking aspack/asprotect or some other
packers. These steal some resources from original place and put them to its own
section, therefore increasing overall size and preventing you from cutting
packer's section. It also prevents Resource hacker from displaying these resouces.
This puts all resources to one place.

I'm sure there are better tools for this, but it may come handy sometimes.

_____________________________________________________

7) AsProtect Unpacker

This will unpack file packed by AsProtect, fix it, dump asprotect.dll
and print various information to text file. Please report targets, where it fails.

Limitations:
1) Doesn't find or fix SDK functions in 1.x versions (you need to find these manually).

There are two types of these. One has a form of one or more functions called
before OEP, that do various initializations. If they are not run, the program
may appear expired or not run at all. Find them and run them

The second type is run after OEP and hides behind GetProcAddress
with special parameters, which AsProtect (if available) redirects
to its own code. You need to deal with these manually.

2) in 2.30 - 2.51, there are two types of stolen functions - one is PolyOEP style, the
other is virtualized; it can fix only the former, while the latter is used
in AsProtect itself only

3) it doesn't find CRC or envelope checks, but it can prevent one type of envelope
check, which checks for E8 in jumps to API

4) it doesn't decrypt encrypted parts or sections

5) it doesn't find serial, fix trial etc.

6) if it has overlay, it may be broken after unpacking (for example if it needs
to be in fixed offset in file or if it's a certificate)

Bugs:
- doesn't work with certain 1.10 variations, I will fix this when I have time

Notes:
- after unpacking files protected by AsProtect 2.x, you may need aspr_ide.dll;
get it from aspack.com and modify if needed
rapidshare.com/files/305337227/CodeDoctor.rar




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 11 ноября 2009 12:22
· Личное сообщение · #2

По описалову по ходу вещЬ, ща будем пробовать.

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 11 ноября 2009 13:04
· Личное сообщение · #3

анпуцкер аспра по всей видимости лучше не юзать, какие-то ограничения не хорошие




Ранг: 154.2 (ветеран), 66thx
Активность: 0.080
Статус: Участник
REVENGE Crew

Создано: 11 ноября 2009 13:16
· Личное сообщение · #4

Не в курсе кто этот плагин написал? Где можно найти человека?




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 11 ноября 2009 13:27
· Личное сообщение · #5

на тутс4ю автор сам его выложил

-----
Лучше быть одиноким, но свободным © $me




Ранг: 48.2 (посетитель), 49thx
Активность: 0.040
Статус: Участник

Создано: 11 ноября 2009 13:41
· Личное сообщение · #6

перезалейте плиз



Ранг: 56.1 (постоянный), 9thx
Активность: 0.040
Статус: Участник

Создано: 11 ноября 2009 13:45 · Поправил: vptrlx
· Личное сообщение · #7

Code:
  1. MOV DWORD PTR SS:[ESP],1231231
  2. POP EBP

не распознаётся, ну и фиг с ним, но:
Code:
  1.   CALL L001
  2. L001:
  3.   POP EAX
  4.   MOV DWORD PTR DS:[EAX+14],10101010 ; замещаем ADD EAX, 33445566
  5.   MOV EAX,77665544
  6.   NOP
  7.   NOP
  8.   NOP
  9.   NOP
  10.   NOP
  11.   NOP
  12.   ADD EAX,33445566

деобфусцируется в
Code:
  1. /*401280*/  NOP
  2. /*401281*/  NOP
  3. /*401282*/  NOP
  4. /*401283*/  NOP
  5. /*401284*/  NOP
  6. /*401285*/  MOV DWORD PTR DS:[401299],10101010
  7. /*40128F*/  NOP
  8. /*401290*/  NOP
  9. /*401291*/  NOP
  10. /*401292*/  NOP
  11. /*401293*/  NOP
  12. /*401294*/  NOP
  13. /*401295*/  NOP
  14. /*401296*/  NOP
  15. /*401297*/  NOP
  16. /*401298*/  MOV EAX,87766554

/edit а это уже нехорошо! я считать умею?)

Но всё равно гут штуковина! Собирался сам нечто такое писать, но всё никак руки не доходили.




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 11 ноября 2009 14:01
· Личное сообщение · #8

Это поможет при разборе виртуализированного кода сделанного themida и vmprotect?
Правильно ли я понял, что вручную нужно выделять фрагменты и применять плагин?



Ранг: 123.0 (ветеран), 10thx
Активность: 0.060
Статус: Участник

Создано: 11 ноября 2009 14:09
· Личное сообщение · #9

ToBad, поможет бороться с запутыванием кода, но не с виртуализацией.

-----
.[ rE! p0w4 ].





Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 11 ноября 2009 15:03
· Личное сообщение · #10

Ultras пишет:
поможет бороться с запутыванием кода


Понял. А чем обычно так код путают? В смысле на чём лучше поиграться с плагом?



Ранг: 129.0 (ветеран), 116thx
Активность: 0.060
Статус: Участник

Создано: 11 ноября 2009 16:16
· Личное сообщение · #11

LIZARD пишет:
перезалейте плиз

Перезалил
multi-up.com/168465

-----
We do what we want because we can.




Ранг: 123.0 (ветеран), 10thx
Активность: 0.060
Статус: Участник

Создано: 11 ноября 2009 16:23 · Поправил: Ultras
· Личное сообщение · #12

ToBad, да хоть на том же аспротекте...

-----
.[ rE! p0w4 ].




Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 11 ноября 2009 16:49
· Личное сообщение · #13

CodeDoctor plugin - серезный такой плагин
Упакован UPX (660 KB) -> распаковка (-d) -> 3.5 МБ (!!), написан на MS Visual C++ 8.0
Интересно - зачем етому плагину 10 cryptoalgo (по KANAL 2.92 аутпуту)
а еще интересен диалог #500, 501, 502 из ресурсов - когда он показиваеться?




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 11 ноября 2009 17:43
· Личное сообщение · #14

а ещё интересно, нафига ты это копаешь




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 11 ноября 2009 19:04
· Личное сообщение · #15

Лихо заменяет инструкции, меняющие флаги, на бесфлаговые инструкции, в результате чего может отвалиться логика. В общем, лучше аналогов, но хероват, как и все паблик деобфускаторы.



Ранг: 1045.7 (!!!!), 31thx
Активность: 0.570
Статус: Участник

Создано: 12 ноября 2009 05:15
· Личное сообщение · #16

от этого же автора
signature pack for IDA, that identifies many many many ASProtect functions (no standard Delphi functions)

babf_11.11.2009_CRACKLAB.rU.tgz - ASProtect Signatures v0.1.rar



Ранг: 281.8 (наставник), 272thx
Активность: 0.250.01
Статус: Участник
Destroyer of protectors

Создано: 12 ноября 2009 07:23
· Личное сообщение · #17

Я в восторге подопытным кроликом была прожка с аспром на борту.
Надеюсь, что проект будет развиваться дальше - готов даж пожертвовать на такое дело



Ранг: 284.8 (наставник), 6thx
Активность: 0.150
Статус: Участник

Создано: 12 ноября 2009 10:44 · Поправил: RSI
· Личное сообщение · #18

слабовата поделка, решил посмотреть на примере ExeCryptor на кусках восстановленного кода.

0043D70A 90 NOP
0043D70B 90 NOP
0043D70C 90 NOP
0043D70D 90 NOP
0043D70E 90 NOP
0043D70F 90 NOP
0043D710 90 NOP
0043D711 90 NOP
0043D712 81E8 D4B23710 SUB EAX,1037B2D4
0043D718 81E0 15705C5A AND EAX,5A5C7015
0043D71E 81F0 055E1DAF XOR EAX,AF1D5E05

такой кусок не оптимизировало!

вот такой кусок:
00418869 81E1 52F2575A AND ECX,5A57F252
0041886F 81F1 86A66E47 XOR ECX,476EA686
00418875 C1C1 19 ROL ECX,19
00418878 81E9 CA757F03 SUB ECX,37F75CA

раскидало как:
00418869 C1C1 19 ROL ECX,19
0041886C 81E1 E4AFB4A4 AND ECX,A4B4AFE4
00418872 81F1 4DDD8E0C XOR ECX,0C8EDD4D
00418878 81E9 CA757F03 SUB ECX,37F75CA

в общем у меня этот плуг смог свернуть только команды типа push|ret, jmp|jmp, push const|pop reg32




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 12 ноября 2009 18:36
· Личное сообщение · #19

Gideon Vi пишет:
а ещё интересно, нафига ты это копаешь


Я тоже хотел , но потом подумл проще спросить. Если плагин был заточен под аспротект , то видимо автор хотел деморфер под него иметь что вполне удобно и нужно. Интересно на чем строится плагин , на каком методе , так его адекватно оценить можно и дать пару наводок на доработку... а сам код деморфинга аспротекта не большой... лучшеб наверное было бы описать методы , и выложить динамически настраиваемый модуль, так можно было бы под разный код оптимизировать. А если уже искать глобальный метод , для деобфускации то тут работы будет достаточно ) В целом интересно , идею эту хотел тоже ранее разработать но на первых парах уже подобные проблемы вылезли. Поэтому должно быть 2 решения , либо глобальный разбор , либо заточенный под что то конкретное, что эффективнее и меньше по размеру кодинга.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 12 ноября 2009 18:53
· Личное сообщение · #20

На тутс4ю автор отписался, что деморфер на основе шаблонов, стало быть, хренов.


 eXeL@B —› Софт, инструменты —› CodeDoctor plugin for OllyDbg
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати