首页
社区
课程
招聘
[求助]看雪crackme精华第一次的脱壳问题
发表于: 2009-1-10 15:38 4943

[求助]看雪crackme精华第一次的脱壳问题

2009-1-10 15:38
4943
序列号-4nil-一个非明码比较,无错误提示的crackME-小鸟学注册
作者说是aspack加密的,用大礼包里面的peid怎么查都查不出是什么壳,不知道作者是怎么发现是aspack的。
使用esp定律脱壳,很容易到oep:004011cb。然后dump,再用IRC修复。结果无法运行,不知道是什么原因。如果在源程序的oep处直接运行也会出错。显示无法逃避……的指令,请修改EIP之类的。请教高手这个问题怎么解决。既我怎样才能把原程序正确脱壳。谢谢。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
2
自己手动填入输入表rva: 3100 大小:54,
2009-1-10 17:51
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
请问你是怎么得到这个数据的呢?
我到OEP后向下看,找到第一个API叫LoadCursorA,call 00401744.然后dd 00401744,但是我没有看到有API的函数表。
2009-1-10 22:31
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
4
你也看到7xxxxxxx之类的api函数地址,这些都是程序运行需要用的api,都已经导入pe了
call 401744,按回车看到是jmp dword ptr[xxxxxx]  ,xxxxxx这里才是api函数地址指针,然后可以在内存里查看了,鼠标拖拉出表的位置大小,od下面有显示,再用REC修复就可以了
2009-1-11 14:29
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
非常感谢,学会了
2009-1-11 22:53
0
雪    币: 444
活跃值: (103)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
路过,我也学会了,谢谢大菜一号
2009-1-18 15:27
0
雪    币: 1596
活跃值: (30)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
7
先用脱壳机脱壳。用OD载入后,按CTRL+N找到USER32.GetDlgItemTextA,回车进入后:
004013AF   call    <jmp.&USER32.GetDlgItemTextA>取注册码
00401539   call    <jmp.&USER32.GetDlgItemTextA>取用户名
00401738   jmp     dword ptr [<&USER32.GetDlgItemTe  USER32.GetDlgItemTextA

在取用户名的地方下断,注意以下代码:
00401548  |> \BF BC020000   mov     edi, 2BC
0040154D  |.  BE 30000000   mov     esi, 30
00401552  |.  B8 48000000   mov     eax, 48
00401557  |.  99            cdq
00401558  |.  F7FB          idiv    ebx                              ;  0x48 % user.len
0040155A  |.  29C6          sub     esi, eax                         ;  0x30-eax
0040155C  |.  8D34B6        lea     esi, dword ptr [esi+esi*4]
0040155F  |.  29F7          sub     edi, esi
00401561  |.  6BFF 6B       imul    edi, edi, 6B
00401564  |.  81EF 6CCF0000 sub     edi, 0CF6C
0040156A  |.  81FF 00230000 cmp     edi, 2300
00401570  |.  7F 08         jg      short 0040157A                   ;  >J
00401572  |.  81FF 90010000 cmp     edi, 190
00401578  |.  7D 04         jge     short 0040157E                   ;  >=J

这段代码是检测用户名长度的,用户长度为3~9位。

004014ED  |.  E8 D0FDFFFF   call    004012C2
这里是关键代码。这个CM本身就是注册机,所以把call    004012C2翻译出来就可以写注册机了。
重点:
004013BC  |.  B8 CF110000   mov     eax, 11CF
004013C1  |.  0FB68D E1FCFF>movzx   ecx, byte ptr [ebp-31F]          ;  注册码各位
004013C8  |.  99            cdq
004013C9  |.  F7F9          idiv    ecx                              ;  eax/ecx
004013CB  |.  83FA 17       cmp     edx, 17
004013CE  |.  74 07         je      short 004013D7

这里是检测注册码第一位是否为‘6’。

还有就是后面有两个wsprintfA函数,要注意它的格式。
上传的附件:
2009-7-17 11:59
0
游客
登录 | 注册 方可回帖
返回
//