首页
社区
课程
招聘
[求助]脱去UPX壳后,程序窗体一换就自动退出!
发表于: 2011-1-26 09:36 10224

[求助]脱去UPX壳后,程序窗体一换就自动退出!

2011-1-26 09:36
10224
upx壳信息:UPX 0.89.6 - 1.02 / 1.05 - 2.90 (Delphi) stub -> Markus & Laszlo
语言:Delphi
问题描述:软件一开始有个账户密码登录窗口,默认密码进去后,会进入主体窗口。用PEiD自带的脱壳插件,脱壳完。打开程序,成功进入登录窗口,默认密码写完确认后,程序退出。
用OllyDBG对脱壳完的程序进行调试,F8一直到登录窗口输完密码,确认按钮按下后,目标程序和OD一起退出,求高手指点。
00611DF0 > $  55            push    ebp
00611DF1   .  8BEC          mov     ebp, esp
00611DF3   .  83C4 F0       add     esp, -10
00611DF6   .  53            push    ebx
00611DF7   .  B8 C0146100   mov     eax, 006114C0
00611DFC   .  E8 1F55DFFF   call    00407320
00611E01   .  8B1D 147C6100 mov     ebx, dword ptr [617C14]          ;  BoYing11.00619BF4
00611E07   .  8B03          mov     eax, dword ptr [ebx]
00611E09   .  E8 D61FE8FF   call    00493DE4
00611E0E   .  8B0D 047D6100 mov     ecx, dword ptr [617D04]          ;  BoYing11.0061C720
00611E14   .  8B03          mov     eax, dword ptr [ebx]
00611E16   .  8B15 E0F45F00 mov     edx, dword ptr [5FF4E0]          ;  BoYing11.005FF52C
00611E1C   .  E8 DB1FE8FF   call    00493DFC
00611E21   .  8B0D D4806100 mov     ecx, dword ptr [6180D4]          ;  BoYing11.0061C730
00611E27   .  8B03          mov     eax, dword ptr [ebx]
00611E29   .  8B15 4CE26000 mov     edx, dword ptr [60E24C]          ;  BoYing11.0060E298
00611E2F   .  E8 C81FE8FF   call    00493DFC
00611E34   .  8B0D BC796100 mov     ecx, dword ptr [6179BC]          ;  BoYing11.0061C718
00611E3A   .  8B03          mov     eax, dword ptr [ebx]
00611E3C   .  8B15 00565E00 mov     edx, dword ptr [5E5600]          ;  BoYing11.005E564C
00611E42   .  E8 B51FE8FF   call    00493DFC
00611E47   .  8B0D 347C6100 mov     ecx, dword ptr [617C34]          ;  BoYing11.0061C0A8
00611E4D   .  8B03          mov     eax, dword ptr [ebx]
00611E4F   .  8B15 18165500 mov     edx, dword ptr [551618]          ;  BoYing11.00551664
00611E55   .  E8 A21FE8FF   call    00493DFC
00611E5A   .  8B0D 087B6100 mov     ecx, dword ptr [617B08]          ;  BoYing11.0061C0E8
00611E60   .  8B03          mov     eax, dword ptr [ebx]
00611E62   .  8B15 FCDB5500 mov     edx, dword ptr [55DBFC]          ;  BoYing11.0055DC48
00611E68   .  E8 8F1FE8FF   call    00493DFC
00611E6D   .  8B0D EC786100 mov     ecx, dword ptr [6178EC]          ;  BoYing11.0061C0E0
00611E73   .  8B03          mov     eax, dword ptr [ebx]
00611E75   .  8B15 44D75500 mov     edx, dword ptr [55D744]          ;  BoYing11.0055D790
00611E7B   .  E8 7C1FE8FF   call    00493DFC
00611E80   .  8B0D 94766100 mov     ecx, dword ptr [617694]          ;  BoYing11.0061C0D8
00611E86   .  8B03          mov     eax, dword ptr [ebx]
00611E88   .  8B15 7CD05500 mov     edx, dword ptr [55D07C]          ;  BoYing11.0055D0C8
00611E8E   .  E8 691FE8FF   call    00493DFC
00611E93   .  8B0D 9C806100 mov     ecx, dword ptr [61809C]          ;  BoYing11.0061BF88
00611E99   .  8B03          mov     eax, dword ptr [ebx]
00611E9B   .  8B15 78075200 mov     edx, dword ptr [520778]          ;  BoYing11.005207C4
00611EA1   .  E8 561FE8FF   call    00493DFC
00611EA6   .  8B0D 9C7E6100 mov     ecx, dword ptr [617E9C]          ;  BoYing11.0061BF80
00611EAC   .  8B03          mov     eax, dword ptr [ebx]
00611EAE   .  8B15 ACFF5100 mov     edx, dword ptr [51FFAC]          ;  BoYing11.0051FFF8
00611EB4   .  E8 431FE8FF   call    00493DFC
00611EB9   .  8B0D CC7C6100 mov     ecx, dword ptr [617CCC]          ;  BoYing11.0061C67C
00611EBF   .  8B03          mov     eax, dword ptr [ebx]
00611EC1   .  8B15 98435900 mov     edx, dword ptr [594398]          ;  BoYing11.005943E4
00611EC7   .  E8 301FE8FF   call    00493DFC
00611ECC   .  8B0D 08786100 mov     ecx, dword ptr [617808]          ;  BoYing11.0061BF70
00611ED2   .  8B03          mov     eax, dword ptr [ebx]
00611ED4   .  8B15 F4D65100 mov     edx, dword ptr [51D6F4]          ;  BoYing11.0051D740
00611EDA   .  E8 1D1FE8FF   call    00493DFC
00611EDF   .  8B0D FC7D6100 mov     ecx, dword ptr [617DFC]          ;  BoYing11.0061C124
00611EE5   .  8B03          mov     eax, dword ptr [ebx]
00611EE7   .  8B15 6CC25600 mov     edx, dword ptr [56C26C]          ;  BoYing11.0056C2B8
00611EED   .  E8 0A1FE8FF   call    00493DFC
00611EF2   .  8B03          mov     eax, dword ptr [ebx]
00611EF4      E8 831FE8FF   call    00493E7C     ********弹出登录窗口
00611EF9      5B            pop     ebx
00611EFA      E8 ED2BDFFF   call    00404AEC

是脱壳不彻底吗?

上传未脱壳的exe,帮忙看下是什么原因

[课程]FART 脱壳王!加量不加价!FART作者讲授!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (23)
雪    币: 416
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有程序嗎?發出來看看,可能是程序的暗樁
2011-1-26 10:31
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
附件上传了,高手帮忙看看!
2011-1-26 11:28
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我上次也遇到相同的问题。。  只是壳不同。。
2011-1-26 11:47
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
问题解决了没?
2011-1-26 12:04
0
雪    币: 429
活跃值: (532)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
下来看看什么情况
2011-1-26 12:16
0
雪    币: 416
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
你確定這個程式沒有問題嗎 = =,我總覺得他是因為異常才退出的 = =
2011-1-26 16:03
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
程序没问题吧,至少没脱壳前是正常的,脱完后用OD跟踪,一到登录窗口OD跟着程序关闭,没法看到哪一行才错误。用W32Dasm跟着代码绕了半天,愣是没找到哪里导致退出的。
2011-1-26 17:24
0
雪    币: 416
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我跟到了= =,他最後會利用VirtualAlloc申請一個記憶體位置,然後執行那裏的記憶體位置,程式會退出也是因為那裏。

還有,這個程式也挺怪的,我即使使用UPX修復和UPX自己的解壓縮,脫殼之後,程式照樣出錯。我在想說是不是有一個filepointer跑掉了

剛剛稍微追了一下,跟我想的一樣,他好像有讀取檔案的某個位置,然後寫入到非程序領空的記憶體位置,至於要如何修改,目前還沒有去解決。
2011-1-26 20:37
0
雪    币: 454
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
自我保护吧
2011-1-26 23:32
0
雪    币: 199
活跃值: (65)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
11
期待9楼有新的发现,会不会是附加数据呢?检查一下获取的文件指针的指向,利用脱壳和为脫殼之前的代码比对一下.
2011-1-27 03:23
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
早起看了幻影兄的分析,很有启发。返回到popad前看了下,发现了
006D4285: 61                       POPAD
006D4286: 8D442480                 LEA EAX, [ESP-80H]     ******出栈后从ESP给EAX赋值
006D428A: 6A00                     PUSH 00000000H
006D428C: 39C4                     CMP ESP, EAX                  ******比较循环
006D428E: 75FA                     JNZ 6D428AH
006D4290: 83EC80                   SUB ESP, FFFFFF80H      ******ESP改变才能使脱壳后正常运行
006D4293: E958DBF3FF               JMP 00611DF0H

继续回壳里算下EAX和ESP,发现加的壳多次调用主程序,不知道是不是程序退出的原因?
2011-1-27 10:08
0
雪    币: 416
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我想應該不是這個問題,那個popad之後的,那個其實也是某些版本的upx殼的出口

他現在的問題是,他申請了一個記憶體位置,然後有讀取程式自己,但是他好像需要脫殼前某些數據,他才會正常,這個部份我今天有空要再跟隨一下。
2011-1-27 11:32
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
静待幻影哥好消息。
2011-1-27 16:08
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
15
用了一个比较萎缩的CRC32校验方法
2011-1-28 08:48
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
是有看到反复的对比校验,15楼兄弟有什么好的办法可以脱壳后躲过校验吗?
2011-1-28 09:19
0
雪    币: 233
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
源程序写的很好,就是为了防止简单破解的
2011-1-28 09:22
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
18
试试
123
上传的附件:
2011-1-28 11:12
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
高手啊,能告诉我怎么做的?学习下
2011-1-28 17:03
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
20
取 198 处之值 , 得 0C
从 190 处取 0C-4= 08 个 bytes, 得'A4FF7D8', 此为 CRC32 Checksum

脱壳后的 198 处之值为 0
从 190 处取 0-4= -4 个 bytes

因用的是 TMemoryStream 物件, 欲取 -4 个 bytes .. 这物件会抛出例外
因用的是这种物件, FilePointer 只是一个内存值, SetFilePointer API 已成浮云.

加上软件本身 Thread 又多, 少经验者较难看出重点

设好脱后正确 CRC32 字符串于 190 处, 并设 198 处为 0C 00 00 00, 即可.

函数 0057F9BC
上传的附件:
  • 1.jpg (54.40kb,51次下载)
2011-1-28 18:19
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
用OD跟踪程序会退出也是类似这种原因吗?
2011-1-28 19:59
0
雪    币: 416
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
難怪我會攔截到一個crc32的算法 = =,但是又看不太懂他在做甚麼....,只知道他是標準的crc算法,其他的找不到 = =
2011-1-28 20:07
0
雪    币: 199
活跃值: (65)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
23
S大牛出马,一个顶俩.吾辈只能望而叹之.
2011-1-29 21:42
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
功力太菜,S大牛脱壳后,我还是破解不出来。大牛们给小弟指条明路吧。。。。
2011-1-30 15:03
0
游客
登录 | 注册 方可回帖
返回
//