玛朵布莎辞 发表于 2016-8-16 21:29

第二课学习完的心得

本帖最后由 玛朵布莎辞 于 2016-8-16 21:34 编辑

一.首先谈谈脱壳,脱壳还是老方法我比较喜欢ESP定律因为通用度高嘛,然后吗特定的壳大家学习过XIMO视频之后应该有特定的对策,比如UPX的CTRL+B "00"法,还有北斗壳的POPAD一步直达法
二.脱完壳之后就来到程序OEP,然后智能搜索,http或者52pojie双击返回反汇编窗口,然后找到地址,一开始我遇到了这样的情况,什么都没有,没有视频里的那种explorer.exehttp://xx这类

后来想起来应该是类型错了,上次为了使用硬件断点脱壳改成了地址,为了一起学习的同学们不至于懵,(也可能我多虑了)。

这样改成文本ASCII32或者64之后,就能显示出来了。
这样就可以用OO填充或者FF填充了。
三.接下来就是作业中的改注册表遇到的问题了
教程里面介绍了神奇的retn大法,但是无奈我才疏学浅,在作业中retn大法并没有用,还导致了程序的崩溃,于是乎,我推荐大家将这一整段代码全部NOP掉(方法一)
004026B0    55            push ebp
004026B1    8BEC            mov ebp,esp
004026B3    83EC 38         sub esp,0x38
004026B6    A1 F41C5700   mov eax,dword ptr ds:
004026BB    33C5            xor eax,ebp
004026BD    8945 F8         mov dword ptr ss:,eax
004026C0    56            push esi
004026C1    57            push edi
004026C2    C745 C8 7019550>mov dword ptr ss:,33.00551970; SOFTWARE\microsoft\Internet Explorer\Main
004026C9    B9 0B000000   mov ecx,0xB
004026CE    BE 44195500   mov esi,33.00551944                      ; http://www.52pojie.cn
004026D3    8D7D CC         lea edi,dword ptr ss:
004026D6    F3:A5         rep movs dword ptr es:,dword ptr ds>
004026D8    8D45 FC         lea eax,dword ptr ss:
004026DB    50            push eax
004026DC    8B4D C8         mov ecx,dword ptr ss:
004026DF    51            push ecx
004026E0    68 02000080   push 0x80000002
004026E5    FF15 0C705200   call dword ptr ds:[<&advapi32.RegCreateK>; advapi32.RegCreateKeyW
004026EB    6A 2C         push 0x2C
004026ED    8D55 CC         lea edx,dword ptr ss:
004026F0    52            push edx                                 ; ntdll.KiFastSystemCallRet
004026F1    6A 01         push 0x1
004026F3    6A 00         push 0x0
004026F5    68 C4195500   push 33.005519C4                         ; Start Page
004026FA    8B45 FC         mov eax,dword ptr ss:
004026FD    50            push eax
004026FE    FF15 10705200   call dword ptr ds:[<&advapi32.RegSetValu>; advapi32.RegSetValueExW
00402704    8B4D FC         mov ecx,dword ptr ss:
00402707    51            push ecx
00402708    FF15 14705200   call dword ptr ds:[<&advapi32.RegCloseKe>; advapi32.RegCloseKey
0040270E    8D55 FC         lea edx,dword ptr ss:
00402711    52            push edx                                 ; ntdll.KiFastSystemCallRet
00402712    8B45 C8         mov eax,dword ptr ss:
00402715    50            push eax
00402716    68 01000080   push 0x80000001
0040271B    FF15 0C705200   call dword ptr ds:[<&advapi32.RegCreateK>; advapi32.RegCreateKeyW
00402721    6A 2C         push 0x2C
00402723    8D4D CC         lea ecx,dword ptr ss:
00402726    51            push ecx
00402727    6A 01         push 0x1
00402729    6A 00         push 0x0
0040272B    68 DC195500   push 33.005519DC                         ; Start Page
00402730    8B55 FC         mov edx,dword ptr ss:
00402733    52            push edx                                 ; ntdll.KiFastSystemCallRet
00402734    FF15 10705200   call dword ptr ds:[<&advapi32.RegSetValu>; advapi32.RegSetValueExW
0040273A    8B45 FC         mov eax,dword ptr ss:
0040273D    50            push eax
0040273E    FF15 14705200   call dword ptr ds:[<&advapi32.RegCloseKe>; advapi32.RegCloseKey
00402744    8D4D FC         lea ecx,dword ptr ss:
00402747    51            push ecx
00402748    8B55 C8         mov edx,dword ptr ss:
0040274B    52            push edx                                 ; ntdll.KiFastSystemCallRet
0040274C    68 01000080   push 0x80000001
00402751    FF15 0C705200   call dword ptr ds:[<&advapi32.RegCreateK>; advapi32.RegCreateKeyW
00402757    6A 2C         push 0x2C
00402759    8D45 CC         lea eax,dword ptr ss:
0040275C    50            push eax
0040275D    6A 01         push 0x1
0040275F    6A 00         push 0x0
00402761    68 F4195500   push 33.005519F4                         ; Default_Page_URL
00402766    8B4D FC         mov ecx,dword ptr ss:
00402769    51            push ecx
0040276A    FF15 10705200   call dword ptr ds:[<&advapi32.RegSetValu>; advapi32.RegSetValueExW
00402770    8B55 FC         mov edx,dword ptr ss:
00402773    52            push edx                                 ; ntdll.KiFastSystemCallRet
00402774    FF15 14705200   call dword ptr ds:[<&advapi32.RegCloseKe>; advapi32.RegCloseKey
0040277A    5F            pop edi                                  ; kernel32.7C817067
0040277B    5E            pop esi                                  ; kernel32.7C817067
0040277C    8B4D F8         mov ecx,dword ptr ss:         ; kernel32.7C817070
0040277F    33CD            xor ecx,ebp
00402781    E8 2AFE0F00   call 33.005025B0
00402786    8BE5            mov esp,ebp
00402788    5D            pop ebp                                  ; kernel32.7C817067
00402789    C3            retn
这么一大坨虽然多但是确实有用,以下提供我个人的一个小窍门,我暂且叫他jmp大法,原理很简单,就是利用jmp的无条件跳转(容我装波B)


这样也是百分之百不报错的,我测试过的。
四.最后一点我感觉有点奇奇怪怪的,就是在做作业的时候,程序内有个网页预览框,如果先用Restorator把这个框框处理过了,然后OD载入再去改那个“课程介绍”
这个按钮,OD就会提示程序存在大量断点之类的,这搞得我也有点莫名其妙。再往后去,改注册表,改网站全部报错,就是保存完修改的程序,运行之后就会出现内存不能为read啊,之类的,所以后来做作业的同学,如果你遇到了和我同样的问题,我推荐你还是先去掉其他的弹窗,禁止改注册表,最后再改那个内置的预览框。这样比较好,行了,今天就和大家交流到这里了。




wade1209 发表于 2016-8-16 21:33

太神了 看不董

宿舍老叁 发表于 2016-8-16 21:35

一起加油努力吧楼主

我来看看看 发表于 2016-8-16 21:38

插眼,待传送

ForGot_227 发表于 2016-8-16 21:43

我来看看看 发表于 2016-8-16 21:38
插眼,待传送

你每天回复那么多,怎么传送?{:301_1008:}

我来看看看 发表于 2016-8-16 21:49

ForGot_227 发表于 2016-8-16 21:43
你每天回复那么多,怎么传送?

无限火力啊{:301_997:}

Richardz 发表于 2016-8-16 22:16

有待学习,慢慢来

xd99213344 发表于 2016-8-16 23:04

厉害,反正我一个都看不懂

usosalpha 发表于 2016-9-7 13:45

改注册表那部分我觉得直接retn是没问题的,毕竟那一整个函数出了改注册表就没干别的。我实际测试之后也是正常。而且从你改的jmp来看也是直接跳到了retn,和直接改retn应该没啥区别吧
页: [1]
查看完整版本: 第二课学习完的心得