首页
社区
课程
招聘
求助,这个自效验怎么绕过?
发表于: 2012-9-3 18:43 5826

求助,这个自效验怎么绕过?

2012-9-3 18:43
5826
大家好,我是一名小菜鸟,今天有一个困扰了好久的问题想向大家请教,还望各位不吝赐教。

本人最近在研究某脚本语言,类似按键精灵,他不但可以执行脚本,还可以生成单独的可执行文件,但如果这种可执行文件有附加文件的话,会释放文件到磁盘,所以我使用了Enigma Virtual Box(http://enigmaprotector.com/en/aboutvb.html)进行绿色封装。
比方说,我把TEST.EXE、README.TXT、TEST.JPG封装成一个PACK.EXE,然后运行这个PACK.EXE,就等于运行了TEST.EXE,并且TEST.JPG和README.TXT均可以被读取调用,而不释放任何文件至磁盘。
问题来了,该脚本语言生成的可执行文件(假定为DEST.EXE),只要一经封装再执行的时候就会报错,弹出一个消息框"EXE Corrupted",确定之后程序自动退出。
经查,确定不是Enigma Virtual Box的问题,而是DEST.EXE本身的自效验捣的鬼,我尝试修改了DEST.EXE的版本号,甚至在无关紧要的位置修改一个字节的数据,都会导致"EXE Corrupted"。

既然确定为自效验,那就开工吧,从"EXE Corrupted"这个信息下手:
用WinHex修改一下DEST.EXE的版本号,在文件偏移0006696C处修改34为35,另存为DEST_MOD.EXE。
OD载入DEST_MOD.EXE,搜索关键词"EXE Corrupted",有两处

00448273  |.  68 34E34500   push DEST_MOD.0045E334                   ;  EXE corrupted
以及
00423F2B  |.  68 34E34500   push DEST_MOD.0045E334                   ;  EXE corrupted

而真正能弹出"EXE Corrupted"消息的是00448273处的指令。
往上翻,发现条件跳转指令

00448265  |. /74 16         je XDEST_MOD.0044827D

我想把此处的je改为jne应该就行了,结果搞完了再运行时却提示另一个错误,无论怎么改始终都无法正确运行。

然后我在其上一条指令00448263  |.  85C0          test eax,eax处下断,F9跑起,发现eax=00000003

而未作修改的DEST.EXE跑到这个地方的时候eax=00000000

我凌乱了,不知道两个EAX在哪就分道扬镳了。

本人水平又菜,只会点最基本的操作,实在找不着关键之处,所以发上来恳请大家指点。多谢!

(相关文件在附件当中)

[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
004509D8      35 AAAAAAAA                 xor     eax, AAAAAAAA
改为
004509D8      B8 AFDF1E2D                 mov     eax, 2D1EDFAF
2012-9-3 19:21
0
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
或许每个EXE的值不同,所以也许下面这种改法更有通用性:
004509DD      3945 F0                     cmp     dword ptr [ebp-10], eax    ; 改mov     eax, dword ptr [ebp-10]
004509E0      75 37                       jnz     short 00450A19                    ;  nop

我很好奇你的结贴率怎么低于10%
2012-9-3 19:24
0
雪    币: 16
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=达文西;1099368]或许每个EXE的值不同,所以也许下面这种改法更有通用性:
004509DD      3945 F0                     cmp     dword ptr [ebp-10], eax    ; 改mov     eax, dword ptr [ebp-10]
004509E0 ...[/QUOTE]

感谢您的回复,我这就试试。
可能我第一次发求助帖的原因吧,昨天发了这个帖子的时候我也奇怪,结帖率低于10%...
2012-9-4 10:10
0
雪    币: 16
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢达文西司令!
问题解决了,果然第二种方法更通用。
2012-9-4 10:56
0
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
要在我的帖子的右下角选择 “最佳答案”的,否则就是 未解决 状态。。。

你看图,红框的位置有 最佳答案 按钮的,你点击后才能结贴。



你以前是不是都忘记点 最佳答案 了?
上传的附件:
2012-9-4 13:01
0
雪    币: 244
活跃值: (40)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
解决问题就闪.打击积极性.
2012-9-4 13:19
0
雪    币: 16
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不好意思,刚刚看到。
我没闪啊,这貌似是我第一次发求助帖,感谢达文西的指教,完事了我会结贴的。

话说问题还没完美解决,又出现新情况了:
上面的修改方法能对付对EXE内容的修改,但是一加UPX壳,然后再运行的话,问题依旧。
2012-9-4 14:03
0
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
看了下:
脚本是作为附加数据放在程序末尾的,文件大小改变后程序依然在原来的位置找脚本,当然不行了。
加上Enigma Virtual Box后,脚本在哪个位置更不好找了(附加数据有没有保留都不好说),仔细分析起来还是比较费时间的,我的没那个时间和精力搞,应该要动的手术有点大。

建议放弃。
2012-9-4 19:36
0
雪    币: 62
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
不会啊,我也是菜鸟!!!!!!!!!多学习!!!!
2012-9-5 00:11
0
雪    币: 16
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
感谢达总的回复,这玩意也困扰了我很久,奈何水平太菜,实在搞不定,所以发上来想请大家帮忙解决的。既然达总建议放弃,我也就不想再纠结这蛋疼的问题了。再次感谢达总的帮助!

话说这本是开源的东西,其源代码我也拿来看了一下,没看懂,将脚本写入EXE这个关键的步骤是用exearc这个闭源的库进行的。

好了,结贴。。。
2012-9-5 12:06
0
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
不客气!
这个确实有点麻烦。
2012-9-5 13:24
0
游客
登录 | 注册 方可回帖
返回
//