yangjt 发表于 2009-8-3 17:35

Eltima 系列软件和谐方法

本帖最后由 yangjt 于 2009-8-3 17:40 编辑

Step1:
脱掉Armadillo
Step2:
搜索程序内存空间,如果用Armadillo Nanomites Fixer处理过 Nanomites则特征码为:
EB 03 90 90 90 90 90 90有可能在程序里会有多处,其中会有一处的代码形如这样0046FB70    55            push    ebp
0046FB71    8BEC            mov   ebp, esp
0046FB73    51            push    ecx
0046FB74    C745 FC 0000000>mov   dword ptr , 0
0046FB7B    EB 03         jmp   short 0046FB80没处理过或用其它软件处理则搜索
EB 03 ?? ?? ??90 90 90 90
鼠标放到46FB70这一行
可以看到本地调用来自 0040DAEE, 0041819B, 00419273, 0042122B, 004283C2, 0044476E, 00444803, 00445FE9, 004478B6, 0044B2D5, 0044C629, 0044D0F6, 004536E1, 004551B0, 0045A729, 0046151A, 00461747, 00462A92, 00463467, 00465057, 00465279, 00468071, 00471CF4
随便选择一个。返回0041819B|.E8 D0790500   call    0046FB70///返回到这里
004181A0|.3D 10010000   cmp   eax, 110                         ;Switch (cases 27..20B)
004181A5|.7F 1B         jg      short 004181C2
004181A7|.74 0C         je      short 004181B5
004181A9|.83F8 27       cmp   eax, 27
004181AC|.74 2D         je      short 004181DB
004181AE|.3D C3000000   cmp   eax, 0C3
004181B3|.EB 17         jmp   short 004181CC
004181B5|>C705 185D8F00>mov   dword ptr , 1            ;Case 110 (WM_INITDIALOG) of switch 004181A0
004181BF|.32C0          xor   al, al
004181C1|.C3            retn
这个函数返回的就是授权的类型,有商业旗舰版,个人版……等等……自选。只需要修改刚才那个函数的eax返回值即可

随便找一个跳转跟随连续按两次回车,让后你就进了
004181DB|> \E8 90890500   call    00470B70                         ;Cases 27 (WM_ICONERASEBKGND),20B (WM_XBUTTONDOWN) of switch 004181A0

这个函数
00470C16|.83CA FF       or      edx, FFFFFFFF
00470C19|.F0:0FC111   lock xadd dword ptr , edx
00470C1D|.4A            dec   edx
00470C1E|.85D2          test    edx, edx
00470C20|.7F 08         jg      short 00470C2A
00470C22|.8B08          mov   ecx, dword ptr
00470C24|.8B11          mov   edx, dword ptr
00470C26|.50            push    eax
00470C27|.FF52 04       call    dword ptr
00470C2A|>32C0          xor   al, al
00470C2C|.E9 D3000000   jmp   00470D04///主要是修改跳转地址,为了让这个函数返回1,所以把跳转地址提前一条指令


找到这样一个地方,修改

这样就大功告成……


其实还有最重要的一点我们没做……
Step3:
找一片空地,写补丁代码$ "Azure"
;$
pushad
mov ebx,dword ptr //SetEnvironmentVariableA
push 05AE4E0//你的名字
push 00401000//需要设置的几个变量
call    ebx
push 05AE4E0
push 00401000
call    ebx
push 05AE4E0
push 00401000
call    ebx
popad
jmp00465D23///跳向OEP需要设置的变量需要自己找……可以从程序里找所有调用GetEnvironmentVariableA的地方……它查的啥你就设置啥。
step4:
右键保存
step5:
设置OEP为你刚才的这段代码,然后运行……看到啥了?哈哈……好戏上演咯……

此方法适用于Eltima公司的大部分软件,有空的自己去搞……

step6:
为了Anti YingCracker党,再加个强壳:ZP,NP,VMP亦可

总结一下……一个公司不能所有的软件都用一种保护方法……保护方式必须多样,否则就好比这个公司的软件一样……一种方法……通杀= =:eek:


作者:Azure
时间:2009.8.3
转载时请保持文章完整,谢谢!
页: [1]
查看完整版本: Eltima 系列软件和谐方法