能力值:
( LV2,RANK:10 )
|
-
-
2 楼
载入是JMP不是JZ。跟下去就是解密代码了。
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
这个只是入口点看起来有点怪而已,接下来并不是解开的代码。当程序停在EP处时,0x10108793处(0x10108793不是EP,请不要误会)的代码已经可见,而且0x10108793并不是壳的代码,所以按理说应该是算无壳的。而且就算0x10108793是壳的代码,那也应该可以修改壳本身的代码并保存,但实际上这样修改后保存,下次载入后的该地址内容也不正确(假设修改了6个字节,那么这6个字节的内容会不对,但其他部分的内容不变,就像是它按字节做了什么变换似的)。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
下载不了, 下了是个attachment.php
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
我这里下载没问题,可能是你当时的网络或者浏览器的问题吧
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
跟下去几步就是SUB解密了,初始解密大概6个地方,跟了几处解密,发现是易语言封装的代码。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
看起來的確是有殼的。但是不難的殼層的樣子。
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
确实是易语言的,不过大哥,请问你怎么解释0x10108793这个地址的内容为什么在最初就可见了?就算这部分是壳代码,那应该也可以修改壳代码保存啊,但是实际上你也做不到…
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
没解密就是乱码,你指的是解密后的代码了,解密完后抹去解密部分保存,就那么简单。
|
能力值:
( LV3,RANK:20 )
|
-
-
10 楼
既然大哥您听不懂我说什么,那么算了,多谢您路过……
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
|
能力值:
( LV3,RANK:20 )
|
-
-
12 楼
[QUOTE=nfgfgo;1025888] 改了。
Install_.rar[/QUOTE]
请问,您是怎么做的?看起来不像是脱壳后再改,因为一旦dump至少要1.07M,你这个还是1.04M。而且我用UE比较后,发现文件前后变动很大,并不是只修改了几个字节。如果用OD修改指令后,进行“复制到可执行文件”结果应该是悲剧的,那么您是用什么工具改的?还有这个DLL原本是怎么回事,是PE文件内置的加密格式么(文件数据和加载后数据不同)?
|
能力值:
( LV3,RANK:20 )
|
-
-
13 楼
通过比较前后两个文件,我找到大致原因,关键是0x100018ae这里的sub dword ptr [eax], 6801293E,把后面的代码全部都减掉了这个数值。但是你改了后,这段被nop了,后面的代码也已经是减掉以后的结果。
不过我还是有个问题要请教下,在这里加软硬断点都没用,断不下来。改int3可以断下,并且确定这处代码是在EP之前被调用的,但是这个DLL没有tls之类的东西,什么代码会在进入EP之前被执行呢?
|
能力值:
( LV3,RANK:20 )
|
-
-
14 楼
我想我还可以换个问法,我用OD加载Install.dll后,停在0x1000177c这个地址,而这个地址就是PE信息头所指的模块入口点,而这时候0x100018ae的sub早已经执行过了。
不过我现在回看了您前几楼的回复,貌似您加载这个DLL后最初并不是停在这个地址,而且那时候0x100018ae的sub也还没执行,这是怎么回事?是我哪里没设置好么?
|
能力值:
( LV3,RANK:20 )
|
-
-
15 楼
我终于知道了,原来一切都是个误会
我这个OD,不知道是哪个设置不对还是怎么回事,一开始停在EP处时,从栈里面看到iReason参数是2,也就是DLL_THREAD_ATTACH,但是那个是1的DLL_PROCESS_ATTACH却也没有断下来。
后来选择“中断于新DLL模块加载”,终于勉强可以在DLL_PROCESS_ATTACH时刻断下,往下跟了几步就是0x100018ae的sub。
因为一开始总是断在DLL_THREAD_ATTACH时刻,但是我却误以为是DLL_PROCESS_ATTACH,所以就觉得这东西没壳了,实际上确实是有一层很薄的壳。
不过奇怪的是加载其他DLL的时候,都是在DLL_PROCESS_ATTACH断下,不知道为什么这个DLL怎么会把这第一次断下错过了。
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
似乎这个叫“自修改”更好。
|
|
|