首页
社区
课程
招聘
[下载]反混淆插件CodeDoctor 0.90
发表于: 2010-4-13 20:50 14094

[下载]反混淆插件CodeDoctor 0.90

2010-4-13 20:50
14094
添加missviola大牛给的中文翻译:

功能:
1.反混淆
在反汇编窗口中选择并执行这条指令。它会尝试将垃圾指令中转换成为清晰的指令。

举例:

原始指令:
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

反混淆后:
00874372 83C3 04 ADD EBX,4

2.反混淆-单步
这条指令的原理同上一条相似,不过它一次只分析一条指令。

3.将nop置后

将这种形式的代码:
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

转换为:
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

限制:它会跳出所有跳转指令和call指令

4.取消/重新执行

取消或再次执行前一条指令

5.检索跳转功能

它会静态分析指令并且跟踪所有的跳转指令。在程序不停地跳来跳去的场合下,这个功能是非常有用的。当它遇到不能跟踪的指令时,它会停止分析,将所有已经分析完毕的指令拷贝到一块指定的内存中去。

在设定中设置这些参数:
步过所有的call-如果设置的话,它会步过所有的call。否则它会跟踪它们。
步过jcc-dtto(?)
反混淆-在遇到Jcc,RET,JMP,CALL指令时,它会反混淆指令。在程序有多分支的时候非常有用。

举例:

转换前:
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

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

6.重建资源和重排列

此功能在脱壳时有一些限制。它从磁盘上打开被调试的文件。然后找到所有的资源并将它们重建到一块区段(当前它将资源重建到exe中的原始区段中)。然后它重新排列文件,以一个新的名字来保存文件。

什么时候此功能是有用的?举例来说,在脱apack/asprotect或者其他一些壳的事后。这些壳会从原始区段中窃取一些资源,并且将它们放置到自己的区段中。由此会增加文件的大小,并且防止你去除壳的区段。同时它也防止了通过一些资源黑客软件看到这些资源。

我确信会有比这个插件更好的工具,不过将它整合进来有时候是十分方便的。

7.AsProctect脱壳
此功能可以脱那些被asprotect加上壳的文件并且修复它们,导出asprotect.dll,将信息输出到txt文件中去。当此功能失败的时候,请提交目标文件给我。

限制:
1.无法找到和修复SDK 1.x版本的函数(你需要手动寻找它们)
此处有两种情况。一种是在OEP之前被调用的函数。它们进行一系列的初始化功能。如果它们不被执行,程序可能会提示失效。找到它们并执行它们:-)
第二种是在OEP之后执行的,通过特殊的参数隐藏在GetprocAddress之后,这些函数AsProtect将它们重新转向到了自己的代码中。你需要手动分析这些代码。

2.在2.30-2.51中,有两种方式的窃取方式-一种为PolyOEP方式,还有一种是虚拟化。此功能只能修复前者。

3.不能找到CRC校验或者外壳检查。不过此功能可以防止一种类型的外壳检查:在跳转到API的指令中寻找E8。

4.它不会解密被加密的部分或者区段。

5.它不会找到序列号,修补试用版等等。

6.如果有附加数据的话,在脱壳后可能会破损。

Bugs:
不能工作在在一些特定的1.10版本下,有时间我会修复的。

注意:
在脱被Asprotect 2.X保护的文件时,你可能需要aspr_ide.dll。从aspack.com上获得它们,如果需要的话,进行修改。

CodeDoctor 0.90 - OllyDbg Plugin by hnedka (11.11.2009)

________________________________________________________________________________

Installation:
Copy CodeDoctor.dll and CodeDoctor.ini to OllyDbg/Plugins
         
________________________________________________________________________________

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

________________________________________________________  
   
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

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 218
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个是好东西。
2010-4-18 00:38
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
最近在跟踪某软件时发现很多的
PUSH XXXXXXXX
JMP    YYYYYYYY
不知用的啥加花处理
OD只要一断下,就会失去响应
2010-4-18 11:22
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
原来去年就有了,谢谢中文化
http://bbs.unpack.cn/thread-42498-1-1.html
2010-4-18 11:37
0
雪    币: 338
活跃值: (65)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我知道,但看雪里没有看到有
2010-4-20 21:46
0
雪    币: 9
活跃值: (142)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
6
适合对付VMP
2010-9-12 17:57
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
楼上错了,他对付不了 VMP
2010-9-12 18:33
0
雪    币: 72
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
很牛X
2010-9-18 12:05
0
雪    币: 563
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
才发现有这样的工具收下了
2010-10-29 08:46
0
雪    币: 281
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
支持楼主,回复下
2011-8-1 09:11
0
雪    币: 62
活跃值: (203)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
这插件真是好东西..感谢
2020-2-25 18:33
0
游客
登录 | 注册 方可回帖
返回
//