| 
注册时间2006-8-7
阅读权限20
最后登录1970-1-1UID20036 以武会友  
 
 该用户从未签到 | 
 
| NTkrnl.Protector.V0.1 去NAG 分析 
 主程序下载地址:http://ntkrnl.com/download/securesuite/ntkrnlprotector.zip
 
 
 脱壳我就不说了,论坛上已经说相关的教程了,
 
 虽然FLY 也破解了一个,但是我想把我个人的分析方法与大家分享:)
 
 1、我们用NTkrnl.Protector.V0.1加壳一个记事本,下CreateFileA,发现他在读取license.nes  2次中断后取消断点alt+f9返回 单步走
 来于此
 
 0042BA20    8B41 0C         mov     eax, dword ptr [ecx+C]
 0042BA23    8378 18 01      cmp     dword ptr [eax+18], 1
 0042BA27    75 0B           jnz     short 0042BA34    **********这个乃关键跳****
 0042BA29    E8 C5000000     call    0042BAF3         **********这个打开NAG****
 
 我们纪录8B 41 0C 83 78 18 01 75 0B 后面需要用到
 
 2、主程序脱壳后为Delphi程序,我们用dede查找 Start按钮事件找到004ECE2C
 OD载入程序Ctrl+G来到004ECE2C并设置断点
 F9运行程序,在主程序选择好未加壳记事本,点 Start
 中断于下,F8单步走,直到加载NSEProLib.dll后
 
 004ECE2C  /.  55            push    ebp         Start按钮事件起始位置(Dede找到的)
 004ECE2D  |.  8BEC          mov     ebp, esp
 004ECE2F  |.  B9 0F000000   mov     ecx, 0F
 004ECE34  |>  6A 00         push    0
 004ECE36  |.  6A 00         push    0
 004ECE38  |.  49            dec     ecx
 004ECE39  |.^ 75 F9         jnz     short 004ECE34
 004ECE3B  |.  51            push    ecx
 004ECE3C  |.  8955 F8       mov     dword ptr [ebp-8], edx
 004ECE3F  |.  8945 FC       mov     dword ptr [ebp-4], eax
 004ECE42  |.  33C0          xor     eax, eax
 004ECE44  |.  55            push    ebp
 004ECE45  |.  68 C8D34E00   push    004ED3C8
 004ECE4A  |.  64:FF30       push    dword ptr fs:[eax]
 004ECE4D  |.  64:8920       mov     dword ptr fs:[eax], esp
 004ECE50  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
 004ECE53  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
 004ECE56  |.  8B80 50050000 mov     eax, dword ptr [eax+550]
 004ECE5C  |.  E8 63F3F5FF   call    0044C1C4
 004ECE61  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
 004ECE64  |.  E8 57C8F1FF   call    004096C0
 004ECE69  |.  84C0          test    al, al
 004ECE6B  |.  0F84 B8040000 je      004ED329
 004ECE71  |.  68 D8D34E00   push    004ED3D8                         ; /FileName = "NSEProLib.dll"
 004ECE76  |.  E8 09A1F1FF   call    <jmp.&kernel32.LoadLibraryA>     ; \LoadLibraryA                           加载NSEProLib.dll
 004ECE7B  |.  8B55 FC       mov     edx, dword ptr [ebp-4]               单步走到这里后EAX值为7140000  你那里可能会变
 
 Alt+M  ---Ctrl+B 搜 8B 41 0C 83 78 18 01 75 0B  然后纪录地址,我这里的7173AD0  你那里可能会变
 我们要Patch的是75这个字节 75
 7173AD0+7=75所在字节
 7173AD7-EAX=33AD7这个值肯定是不会变的。
 
 我们来Patch她。找块空地 我找的是560000
 004ECE7B  |.  8B55 FC       mov     edx, dword ptr [ebp-4]      改成jmp 560000
 004ECE7E      8982 CC100000 mov     dword ptr [edx+10CC], eax
 
 00560000      C680 D73A0300>mov     byte ptr [eax+33AD7], 0EB    我们Patch的字节
 00560007      8B55 FC       mov     edx, dword ptr [ebp-4]                原代码
 0056000A      8982 CC100000 mov     dword ptr [edx+10CC], eax     原代码
 00560010    ^ E9 6FCEF8FF   jmp     004ECE84                               跳回去
 
 我们保存,再加壳一个程序,启动时已经不在有NAG 了
 
 
 希望此文能让一些起步的朋友们学到一点知识,我的目的也就达到。如有错误请指出。谢谢
 | 
 评分
查看全部评分
 |