本帖最后由 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 [ebp-4], 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 [8F5D18], 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 [ecx], edx
00470C1D |. 4A dec edx
00470C1E |. 85D2 test edx, edx
00470C20 |. 7F 08 jg short 00470C2A
00470C22 |. 8B08 mov ecx, dword ptr [eax]
00470C24 |. 8B11 mov edx, dword ptr [ecx]
00470C26 |. 50 push eax
00470C27 |. FF52 04 call dword ptr [edx+4]
00470C2A |> 32C0 xor al, al
00470C2C |. E9 D3000000 jmp 00470D04///主要是修改跳转地址,为了让这个函数返回1,所以把跳转地址提前一条指令
找到这样一个地方,修改
这样就大功告成……
其实还有最重要的一点我们没做……
Step3:
找一片空地,写补丁代码$ "Azure[LCG]"
;$
pushad
mov ebx,dword ptr [5AF484]//SetEnvironmentVariableA
push 05AE4E0//你的名字
push 00401000//需要设置的几个变量
call ebx
push 05AE4E0
push 00401000
call ebx
push 05AE4E0
push 00401000
call ebx
popad
jmp 00465D23///跳向OEP
需要设置的变量需要自己找……可以从程序里找所有调用GetEnvironmentVariableA的地方……它查的啥你就设置啥。
step4:
右键保存
step5:
设置OEP为你刚才的这段代码,然后运行……看到啥了?哈哈……好戏上演咯……
此方法适用于Eltima公司的大部分软件,有空的自己去搞……
step6:
为了Anti YingCracker党,再加个强壳:ZP,NP,VMP亦可
总结一下……一个公司不能所有的软件都用一种保护方法……保护方式必须多样,否则就好比这个公司的软件一样……一种方法……通杀= =:eek:
作者:Azure[LCG]
时间:2009.8.3
转载时请保持文章完整,谢谢! |