首页
社区
课程
招聘
[旧帖] [原创]Okoker Delete 1.0 SMC 爆破 0.00雪花
发表于: 2007-7-30 01:56 4336

[旧帖] [原创]Okoker Delete 1.0 SMC 爆破 0.00雪花

2007-7-30 01:56
4336
【文章标题】: Okoker Delete 1.0 SMC 爆破
【文章作者】: 壹群老虎
【软件名称】: Okoker Delete 1.0
【软件大小】: 1,620,584 字节
【下载地址】: 自己搜索下载
【加壳方式】: ASPack 2.12 -> Alexey Solodovnikov
【保护方式】: NAG+时间限制+NAG
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: OD+topo
【操作平台】: Operating System: Windows /98/ME/NT/2000/XP/2003 Server/Vista
【软件介绍】: Okoker Delete 安全删除工具
【作者声明】: 本ID得到壹只老虎的授权^_^
--------------------------------------------------------------------------------
【详细过程】
  
  第一步,试用程序,了解限制方便爆破。通常你可以通过试用程序或参考帮助和注册须知了解程序的限制。
  
  
  发现限制,启动/退出有nag,有时间限制
  
  第二步,爆破开始。
  
  Peid——>ASPack 2.12 -> Alexey Solodovnikov
  直接用脱壳插件脱之
  
  Peid——>Borland Delphi 6.0 - 7.0
  
  
  用OD载入脱壳后的程序。
  
  通过字符串,可以找到关键位置:
  
  
  Ultra String Reference, 条目 1106
   Address=00506347
   Disassembly=mov     edx, 00506558
   Text String=check registe information begin
  
  很吸引人啊,双击当前行进入代码窗口。
  
  
  
  00506340    E8 FBE8EFFF     call    00404C40
  00506345    8B06            mov     eax, dword ptr [esi]
  00506347    BA 58655000     mov     edx, 00506558                    ; check registe information begin
  0050634C    E8 5F73FFFF     call    004FD6B0
  00506351    8B15 18315100   mov     edx, dword ptr [513118]
  00506357    A1 00315100     mov     eax, dword ptr [513100]          ; 检查注册信息
  0050635C    E8 73DEFFFF     call    005041D4                         ; 通常说的关键Call
  00506361    84C0            test    al, al                           ; 很典型的比较,通常检查成功al应为1       可以按照未注册为0逆推
  00506363    74 39           je      short 0050639E
  00506365    C605 F0305100 0>mov     byte ptr [5130F0], 1             ; 赋值,注册成功是一般赋值1,反之为0或不赋值
  0050636C    A1 94155100     mov     eax, dword ptr [511594]
  00506371    FF30            push    dword ptr [eax]
  00506373    68 30655000     push    00506530
  00506378    A1 D4125100     mov     eax, dword ptr [5112D4]
  0050637D    FF30            push    dword ptr [eax]
  0050637F    B8 F4305100     mov     eax, 005130F4
  00506384    BA 03000000     mov     edx, 3
  00506389    E8 DEEBEFFF     call    00404F6C
  0050638E    8B15 F4305100   mov     edx, dword ptr [5130F4]
  00506394    A1 EC305100     mov     eax, dword ptr [5130EC]
  00506399    E8 1651F7FF     call    0047B4B4
  0050639E    8B06            mov     eax, dword ptr [esi]
  005063A0    BA 80655000     mov     edx, 00506580                    ; check registe information successful
  005063A5    E8 0673FFFF     call    004FD6B0
  005063AA    A1 AC145100     mov     eax, dword ptr [5114AC]          ; 检查注册信息成功
  005063AF    8B00            mov     eax, dword ptr [eax]
  005063B1    8B15 F4305100   mov     edx, dword ptr [5130F4]
  
  
  
  
  0050635C    E8 73DEFFFF     call    005041D4                         ; 通常说的关键Call
  
  此行点击会回车进入子程序
  
  005041D4    55              push    ebp
  005041D5    8BEC            mov     ebp, esp
  005041D7    83C4 E8         add     esp, -18
  005041DA    53              push    ebx
  005041DB    33C9            xor     ecx, ecx
  005041DD    894D F4         mov     dword ptr [ebp-C], ecx
  005041E0    894D F0         mov     dword ptr [ebp-10], ecx
  005041E3    8955 F8         mov     dword ptr [ebp-8], edx
  005041E6    8945 FC         mov     dword ptr [ebp-4], eax
  005041E9    8B45 FC         mov     eax, dword ptr [ebp-4]
  005041EC    E8 AB0EF0FF     call    0040509C
  005041F1    8B45 F8         mov     eax, dword ptr [ebp-8]
  005041F4    E8 A30EF0FF     call    0040509C
  005041F9    33C0            xor     eax, eax
  005041FB    55              push    ebp
  005041FC    68 76425000     push    00504276
  00504201    64:FF30         push    dword ptr fs:[eax]
  00504204    64:8920         mov     dword ptr fs:[eax], esp
  00504207    33DB            xor     ebx, ebx
  00504209    837D FC 00      cmp     dword ptr [ebp-4], 0
  0050420D    74 4C           je      short 0050425B
  0050420F    837D F8 00      cmp     dword ptr [ebp-8], 0
  00504213    74 46           je      short 0050425B
  00504215    8D55 EC         lea     edx, dword ptr [ebp-14]
  00504218    B8 8C425000     mov     eax, 0050428C                    ; 395765748698769623417999
  0050421D    E8 D2BCF9FF     call    0049FEF4
  00504222    8D55 E8         lea     edx, dword ptr [ebp-18]
  00504225    B8 B0425000     mov     eax, 005042B0                    ; 488695864831392881429209
  0050422A    E8 C5BCF9FF     call    0049FEF4
  0050422F    8D55 F4         lea     edx, dword ptr [ebp-C]
  00504232    8B45 F8         mov     eax, dword ptr [ebp-8]
  00504235    E8 AAFEFFFF     call    005040E4
  0050423A    8D45 F0         lea     eax, dword ptr [ebp-10]
  0050423D    50              push    eax
  0050423E    8B4D E8         mov     ecx, dword ptr [ebp-18]
  00504241    8B55 EC         mov     edx, dword ptr [ebp-14]
  00504244    8B45 F4         mov     eax, dword ptr [ebp-C]
  00504247    E8 E8D5F9FF     call    004A1834
  0050424C    8B45 F0         mov     eax, dword ptr [ebp-10]
  0050424F    8B55 FC         mov     edx, dword ptr [ebp-4]
  00504252    E8 A10DF0FF     call    00404FF8
  00504257    75 02           jnz     short 0050425B
  00504259    B3 01           mov     bl, 1
  0050425B    33C0            xor     eax, eax
  0050425D    5A              pop     edx
  0050425E    59              pop     ecx
  0050425F    59              pop     ecx
  00504260    64:8910         mov     dword ptr fs:[eax], edx
  00504263    68 7D425000     push    0050427D
  00504268    8D45 F0         lea     eax, dword ptr [ebp-10]
  0050426B    BA 04000000     mov     edx, 4
  00504270    E8 9B09F0FF     call    00404C10
  00504275    C3              retn
  
  
  以上代码是检查注册码的,今天是SMC爆破,不管他。
  
  我们需要al为1,所以修改代码
  005041D4    B0 01           mov     al, 1                            ; 赋值
  005041D6    C3              retn                                     ; 返回
  
  
  将修改保存到程序,然后运行,发现启动仍有nag,但时间限制和退出时的nag没有了,基本成功,去掉启动nag即可。
  
  
  Delphi 的程序用De-SCode搞定【名词解释De-SCode的意思是针对Delphi的特别代码序列*(俺自己起的)*】
  
  De-SCode For NAG (98%有效)
  
  mov eax,dword ptr ss:[ebp-8]
  pop esi
  pop ebx
  mov esp,ebp
  pop ebp
  ret
  
  nag出现后,Ctrl搜索上述代码序列,在每个上都按F2下断点。
  
  切换到目标程序,中途断下的全部取消断点。
  
  点击退出NAG的按钮,按后OD断下。
  
  
  0049A2A3    8B45 F8         mov     eax, dword ptr [ebp-8]
  0049A2A6    5E              pop     esi
  0049A2A7    5B              pop     ebx
  0049A2A8    8BE5            mov     esp, ebp
  0049A2AA    5D              pop     ebp
  0049A2AB    C3              retn
  
  F8 6下,直到ret返回。
  
  
  00506757    8078 40 00      cmp     byte ptr [eax+40], 0
  0050675B  ^ 75 E8           jnz     short 00506745
  0050675D    803D F0305100 0>cmp     byte ptr [5130F0], 0
  00506764    75 16           jnz     short 0050677C                   ; 跳过nag,修改这里为JMP
  00506766    A1 60105100     mov     eax, dword ptr [511060]
  0050676B    8B00            mov     eax, dword ptr [eax]
  0050676D    8B10            mov     edx, dword ptr [eax]
  0050676F    FF92 EC000000   call    dword ptr [edx+EC]               ; nag
  00506775    E8 DA520000     call    0050BA54                         ; 返回到这里
  0050677A    EB 2C           jmp     short 005067A8
  
  修改
  00506764   /EB 16           jmp     short 0050677C                   ; 跳过nag,修改这里为JMP
  
  
  至此爆破完成
  
  
  第三步,SMC
  
  原程序加壳,脱壳后制作文件补丁会很大,所以最好使用SMC,ASPACK的SMC很简单。
  
  
  整理修改点。
  
  1
  005041D4    B0 01           mov     al, 1                            ; 赋值
  005041D6    C3              retn      
  
  修改点005041D4 :B0 01 C3
  
  2
  00506764   /EB 16           jmp     short 0050677C
  
  修改点00506764 :EB
  
  
  增加空白空间供写入SMC代码。推荐使用topo ,简单实用的小工具。版本:cao_cong 汉化免杀1.2 版【免杀不代表topo是恶意程序】
  
  复制一份目标程序Delete.exe(原始文件)为 Cr_Delete.exe
  
  打开topo,点击【打开】——确定——然后定位到目标软件的安装目录选择Cr_Delete.exe。
  
  ——使用一个已有节——确定【我们需要的空间很小,所以选择这个。 加壳的文件也有空隙的】
  
  要添加的字节数: 填 120,不要问为什么(最少需要字节数<120字节<最大可添加字节数),点击【执行】。
  
  结果窗口显示的就是我们需要的数据了。
  
  ____________________________
  
  120字节添加于:
  -内存地址:      00620E16h
  -文件偏移:      000BBE16h
  ____________________________
  
  -内存地址:      00620E16h             末尾的h是16进制标记,地址就是00620E16。
  
  
  Od载入添加字节后的Cr_Delete.exe,F8,命令 Hr ESP【Fly大侠的ESP定律】,F9,停在
  
  0060F3B0   /75 08           jnz     short 0060F3BA
  0060F3B2   |B8 01000000     mov     eax, 1
  0060F3B7   |C2 0C00         retn    0C
  0060F3BA   \68 6CCF5000     push    0050CF6C
  0060F3BF    C3              retn
  
  再F83次,就是OEP了,但我们不需要到那里。
  
  0060F3BA    68 6CCF5000     push    0050CF6C
  
  这里是动态解密的,所以不能修改这里。【如何解密的,前辈有文章存世】
  
  
  0060F3B0   /75 08           jnz     short 0060F3BA
  
  这里,我所见到的都是跳,修改为
  
  
  0060F3AF    61              popad
  0060F3B0    E9 611A0100     jmp     00620E16
  0060F3B5    90              nop
  0060F3B6    90              nop
  0060F3B7    C2 0C00         retn    0C
  
  前往地址00620E16
  
  开始我们的代码
  
  topo 已经为我们填好NOP了,怎么改是我们的事情了。
  
  
  恢复原来的代码,万一他跳了呢:-)     应该没有这个万一,但我们要养成好习惯
  
  00620E16   /75 06           jnz     short 00620E1E                   ; 不等跳到前往OEP的代码,我们改为跳到SMC的代码
  00620E18   |B8 01000000     mov     eax, 1                           ; 原始代码
  00620E1D   |C3              retn                                     ; 原始的返回指令
  
  要理解原始代码的含义,虽然看上去不一样,但效果是一样的。
  
  
  00620E1E    C705 D4415000 B>mov     dword ptr [5041D4], 0C301B0      ; 修改 修改点1
  00620E28    C605 64675000 E>mov     byte ptr [506764], 0EB           ; 修改 修改点2
  00620E2F  ^ E9 86E5FEFF     jmp     0060F3BA                         ; 返回原始代码,也可直接跳到OEP
  
  dword:4字节
  byte:1字节
  数据如果是字母(只能是a,b,c,d,e,f之一)开头,前面要加0,否则OD会无法识别的。
  
  0C301B0  是修改点一的数据,长度3,所以用dword ptr [5041D4],顺序的变化我就不解释啦
  
  0EB   是修改点二的数据,长度1,所以用byte ptr [506764]
  
  
  如果要修改的长度大于四,可以多次使用,或使用批量复制模式。
  
  注意一点,需要smc的位置如果不可写,脱离OD 会出错的(解决:用loadpe类的工具为对应区段增加 可写属性即可),如果在OD中需要smc的位置如果有int断点,OD中执行也会出错的。
  
  保存修改到文件,完毕!
  
  
  
  
--------------------------------------------------------------------------------

                                                       2007年07月30日 1:42:08

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 112
活跃值: (16)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
2
自家兄弟,支持!~````````
2007-7-30 02:03
0
雪    币: 4441
活跃值: (805)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
学习了,支持一下
2007-7-30 15:21
0
雪    币: 204
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
xuele....
2007-8-9 10:48
0
游客
登录 | 注册 方可回帖
返回
//