好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 realright 于 2010-3-13 16:45 编辑
真正的菜鸟的第一脱——UPX 0.89.6 - 1.02 / 1.05 - 1.24
别的不多说,我菜,你们想不到的菜:
汇编,什么破代码,我不懂;
VB, 好吧我知道,dim啥啥,其他一遍闪;
C,知道一个for,一个choose,一个while,其他同上;
然后,其他就是白痴一个了!
但是,这个不妨碍,我学!脱吧,壳嘛,大不了单步!
今天我来脱一个,这是看了一天的论坛,按大侠们教的!
工具:OllyICE,peid,ImpREC,upx加壳软件
软件:uxp 加壳的 notepad.exe
文件名:upx_jsb jsb(就是记事本的意思)
1 查壳
peid拿来:
2 脱壳
od载入,显示如下代码:
01014260 > $ 60 pushad //f8一路往下走
01014261 . BE 00000101 mov esi, 01010000
01014266 . 8DBE 0010FFFF lea edi, dword ptr [esi+FFFF1000]
0101426C . 57 push edi
0101426D . 83CD FF or ebp, FFFFFFFF
01014270 . EB 10 jmp short 01014282 //往下跳的,允许了
01014272 90 nop
01014273 90 nop
01014274 90 nop
01014275 90 nop
01014276 90 nop
01014277 90 nop
01014278 > 8A06 mov al, byte ptr [esi]
0101427A . 46 inc esi
0101427B . 8807 mov byte ptr [edi], al
0101427D . 47 inc edi
0101427E > 01DB add ebx, ebx
01014280 . 75 07 jnz short 01014289
01014282 > 8B1E mov ebx, dword ptr [esi] //跳到这,继续f8
01014284 . 83EE FC sub esi, -4
01014287 . 11DB adc ebx, ebx
01014289 >^ 72 ED jb short 01014278 //到这里,这个也是跳,我不懂,但跑几次后,发现老是往上回 到01014278,那就f4跳过
0101428B . B8 01000000 mov eax, 1
01014290 > 01DB add ebx, ebx
01014292 . 75 07 jnz short 0101429B //往下,允许了
01014294 . 8B1E mov ebx, dword ptr [esi]
01014296 . 83EE FC sub esi, -4
01014299 . 11DB adc ebx, ebx
0101429B > 11C0 adc eax, eax
0101429D . 01DB add ebx, ebx
0101429F .^ 73 EF jnb short 01014290 //没有实现跳,继续
010142A1 . 75 09 jnz short 010142AC //往下,好继续
010142A3 . 8B1E mov ebx, dword ptr [esi]
010142A5 . 83EE FC sub esi, -4
010142A8 . 11DB adc ebx, ebx
010142AA .^ 73 E4 jnb short 01014290
010142AC > 31C9 xor ecx, ecx
010142AE . 83E8 03 sub eax, 3
010142B1 . 72 0D jb short 010142C0 //往下的
010142B3 . C1E0 08 shl eax, 8
010142B6 . 8A06 mov al, byte ptr [esi]
010142B8 . 46 inc esi
010142B9 . 83F0 FF xor eax, FFFFFFFF
010142BC . 74 74 je short 01014332
010142BE . 89C5 mov ebp, eax
010142C0 > 01DB add ebx, ebx
010142C2 . 75 07 jnz short 010142CB //往下的
010142C4 . 8B1E mov ebx, dword ptr [esi]
010142C6 . 83EE FC sub esi, -4
010142C9 . 11DB adc ebx, ebx
010142CB > 11C9 adc ecx, ecx //到这了
010142CD . 01DB add ebx, ebx
010142CF . 75 07 jnz short 010142D8 //又是往下
010142D1 . 8B1E mov ebx, dword ptr [esi]
010142D3 . 83EE FC sub esi, -4
010142D6 . 11DB adc ebx, ebx
010142D8 > 11C9 adc ecx, ecx //到这了,继续
010142DA . 75 20 jnz short 010142FC //这个跳没有实现,继续
010142DC . 41 inc ecx
010142DD > 01DB add ebx, ebx
010142DF . 75 07 jnz short 010142E8 //往下,继续
010142E1 . 8B1E mov ebx, dword ptr [esi]
010142E3 . 83EE FC sub esi, -4
010142E6 . 11DB adc ebx, ebx
010142E8 > 11C9 adc ecx, ecx //到这了
010142EA . 01DB add ebx, ebx
010142EC .^ 73 EF jnb short 010142DD //这个往上,f4过去往下走
010142EE . 75 09 jnz short 010142F9 //往下的,走
010142F0 . 8B1E mov ebx, dword ptr [esi]
010142F2 . 83EE FC sub esi, -4
010142F5 . 11DB adc ebx, ebx
010142F7 .^ 73 E4 jnb short 010142DD
010142F9 > 83C1 02 add ecx, 2 //到这,走
010142FC > 81FD 00F3FFFF cmp ebp, -0D00
01014302 . 83D1 01 adc ecx, 1
01014305 . 8D142F lea edx, dword ptr [edi+ebp]
01014308 . 83FD FC cmp ebp, -4
0101430B . 76 0F jbe short 0101431C //没有跳,走下去
0101430D > /8A02 mov al, byte ptr [edx]
0101430F . |42 inc edx
01014310 . |8807 mov byte ptr [edi], al
01014312 . |47 inc edi
01014313 . |49 dec ecx
01014314 .^\75 F7 jnz short 0101430D //到这,要跳回去
01014316 .^ E9 63FFFFFF jmp 0101427E //这个也是要回去,全部f4过去
0101431B 90 nop
0101431C > 8B02 mov eax, dword ptr [edx] //从这个f8下去
0101431E . 83C2 04 add edx, 4
01014321 . 8907 mov dword ptr [edi], eax
01014323 . 83C7 04 add edi, 4
01014326 . 83E9 04 sub ecx, 4
01014329 .^ 77 F1 ja short 0101431C //也没有实现跳,走吧往下
0101432B . 01CF add edi, ecx
0101432D .^ E9 4CFFFFFF jmp 0101427E //到这,要往回跳,f4过去
01014332 > 5E pop esi
01014333 . 89F7 mov edi, esi
01014335 . B9 32010000 mov ecx, 132
0101433A > 8A07 mov al, byte ptr [edi]
0101433C . 47 inc edi
0101433D . 2C E8 sub al, 0E8
0101433F > 3C 01 cmp al, 1
01014341 .^ 77 F7 ja short 0101433A //这是要往上,不让你跳
01014343 . 803F 01 cmp byte ptr [edi], 1
01014346 .^ 75 F2 jnz short 0101433A //这个也想回去,照旧不让跳
01014348 . 8B07 mov eax, dword ptr [edi]
0101434A . 8A5F 04 mov bl, byte ptr [edi+4]
0101434D . 66:C1E8 08 shr ax, 8
01014351 . C1C0 10 rol eax, 10
01014354 . 86C4 xchg ah, al
01014356 . 29F8 sub eax, edi
01014358 . 80EB E8 sub bl, 0E8
0101435B . 01F0 add eax, esi
0101435D . 8907 mov dword ptr [edi], eax
0101435F . 83C7 05 add edi, 5
01014362 . 89D8 mov eax, ebx
01014364 .^ E2 D9 loopd short 0101433F //一路走到这,好像是个循环,不能回去,f4过掉
01014366 . 8DBE 00200100 lea edi, dword ptr [esi+12000]
0101436C > 8B07 mov eax, dword ptr [edi]
0101436E . 09C0 or eax, eax
01014370 . 74 3C je short 010143AE //跳转没有实现,继续走
01014372 . 8B5F 04 mov ebx, dword ptr [edi+4]
01014375 . 8D8430 14AE01>lea eax, dword ptr [eax+esi+1AE14]
0101437C . 01F3 add ebx, esi
0101437E . 50 push eax
0101437F . 83C7 08 add edi, 8
01014382 . FF96 DCAE0100 call dword ptr [esi+1AEDC] //走到这,call啥,好像是个loadlibarya啥玩意,朦朦胧胧地觉得这就可以
//下断点的地方,什么原理嘛?嘛玩意嘛?反正都不懂,随便你了,走吧往下
01014388 . 95 xchg eax, ebp
01014389 > 8A07 mov al, byte ptr [edi]
0101438B . 47 inc edi
0101438C . 08C0 or al, al
0101438E .^ 74 DC je short 0101436C //往上跳的,没有实现,下走
01014390 . 89F9 mov ecx, edi
01014392 . 57 push edi
01014393 . 48 dec eax
01014394 . F2:AE repne scas byte ptr es:[edi]
01014396 . 55 push ebp
01014397 . FF96 E0AE0100 call dword ptr [esi+1AEE0] //又是call,这玩意尽欺负人,下吧--!(getprocaddress,下断点用的?
//大牛们老提到这个的,郁闷,这就是什么都不懂的坏处!杯具…)
0101439D . 09C0 or eax, eax
0101439F . 74 07 je short 010143A8 //没有实现,下
010143A1 . 8903 mov dword ptr [ebx], eax
010143A3 . 83C3 04 add ebx, 4
010143A6 .^ EB E1 jmp short 01014389 //这个往上,不让你回。但是,我f4不管用了,它直接就运行了,郁闷!
//重新上述步骤,来到此处!往下一看,嘿有popad,这是什么出口,
//说是到这了,就是壳解压完了!我f4直接到那里去算了
010143A8 > FF96 E4AE0100 call dword ptr [esi+1AEE4]
010143AE > 61 popad //f4到这里了,走,下了
010143AF .- E9 E92FFFFF jmp 0100739D //跳很远的,貌似就是他们所说的什么入口点前的跳入了,跟进!结果如下:
大跳后的代码:
0100739D 6A 70 push 70 //难道这里就可以新建eip?不懂,试试吧!结果出现提示:可疑的什么玩意,不懂,
//继续我的事!插件dump,什么不改,确认,保存为1.exe
//好了,这回我们去看看什么玩意吧,那个1.exe !!!!希望可以
0100739F 68 98180001 push 01001898
010073A4 E8 BF010000 call 01007568
010073A9 33DB xor ebx, ebx
010073AB 53 push ebx
010073AC 8B3D CC100001 mov edi, dword ptr [10010CC] ; kernel32.GetModuleHandleA
010073B2 FFD7 call edi
010073B4 66:8138 4D5A cmp word ptr [eax], 5A4D
010073B9 75 1F jnz short 010073DA
桌面双击1.exe,哇,我们熟悉的记事本出来了!
peid查壳一下:什么深度、核心啊,都是一样的结果,看来我们成功了!呵呵
什么深度、核心啊,都是一样的结果,看来我们成功了!呵呵!
可以啊,我们菜鸟什么都不懂的,也可以啊!
可惜,后来看了一下,都是upx是最简单的,难怪了!嗯,算了,毕竟咱也菜,才第一天,就不苛刻自己了!
这个以下是加过壳的和脱过壳的东东,要的话自己下!后缀自己改一下,我是为了方便上传加了后缀的!
Upx_JSB.exe.rar
(46.5 KB, 下载次数: 113)
1.exe.rar
(120 KB, 下载次数: 90)
|
免费评分
-
查看全部评分
|