好友
阅读权限10
听众
最后登录1970-1-1
|
最近小弟在破一个外国软件,可是怎么也破不了。不解了2个星期,请大牛指导一下。
这个软件是加了穿山甲壳的,不过已经用脱壳机脱掉了。没壳。是C++写成。
运行后,期限已经满了,要求注册。
我用OD载入后,按常规找字符串,可是怎么也找不到提示错误的字符串。(包括 ASCLL,UNI)
然后我就把OD暂停,去找调用函数找到了以下的东东:
00417C50 . 64:A1 0000000>mov eax,dword ptr fs:[0] // 段首
00417C56 . 6A FF push -1
00417C58 . 68 40364500 push ASFConve.00453640
00417C5D . 50 push eax
00417C5E . 64:8925 00000>mov dword ptr fs:[0],esp
00417C65 . 83EC 08 sub esp,8
00417C68 . 56 push esi
00417C69 . 8BF1 mov esi,ecx
00417C6B . 8B46 64 mov eax,dword ptr ds:[esi+64]
00417C6E . 8B4E 60 mov ecx,dword ptr ds:[esi+60]
00417C71 . 50 push eax
00417C72 . 51 push ecx
00417C73 . E8 B8070000 call ASFConve.00418430 //我怀疑是这个Call出问题
00417C78 . 83C4 08 add esp,8
00417C7B . 85C0 test eax,eax //跳的条件是eax不等于0
00417C7D . 0F85 82000000 jnz ASFConve.00417D05 ; (Initial CPU selection) //这个跳很明显是没跳的。
00417C83 . A1 3C974600 mov eax,dword ptr ds:[46973C]
00417C88 . 894424 08 mov dword ptr ss:[esp+8],eax ; (初始 cpu 选择)
00417C8C . 68 30EF0000 push 0EF30 ; /Arg1 = 0000EF30
00417C91 . 8D4C24 0C lea ecx,dword ptr ss:[esp+C] ; |
00417C95 . C74424 18 000>mov dword ptr ss:[esp+18],0 ; |
00417C9D . E8 50DD0200 call ASFConve.004459F2 ; \ASFConve.004459F2
00417CA2 . 8B0D 3C974600 mov ecx,dword ptr ds:[46973C] ; ASFConve.00469750
00417CA8 . 894C24 04 mov dword ptr ss:[esp+4],ecx
00417CAC . 68 44EF0000 push 0EF44 ; /Arg1 = 0000EF44
00417CB1 . 8D4C24 08 lea ecx,dword ptr ss:[esp+8] ; |
00417CB5 . C64424 18 01 mov byte ptr ss:[esp+18],1 ; |
00417CBA . E8 33DD0200 call ASFConve.004459F2 ; \ASFConve.004459F2
00417CBF . 8B5424 08 mov edx,dword ptr ss:[esp+8]
00417CC3 . 8B4424 04 mov eax,dword ptr ss:[esp+4]
00417CC7 . 6A 30 push 30
00417CC9 . 52 push edx
00417CCA . 50 push eax
00417CCB . 8BCE mov ecx,esi
00417CCD . E8 C1C60200 call ASFConve.00444393 ; 提示错误
00417CD2 . 8D4C24 04 lea ecx,dword ptr ss:[esp+4]
00417CD6 . C64424 14 00 mov byte ptr ss:[esp+14],0
00417CDB . E8 83A40200 call ASFConve.00442163
我进去了那个CALL,是以下的代码:
00418430 /$ 53 push ebx ; ASFConve.00417C50
00418431 |. 55 push ebp
00418432 |. 8B6C24 0C mov ebp,dword ptr ss:[esp+C]
00418436 |. 56 push esi
00418437 |. 85ED test ebp,ebp
00418439 |. 57 push edi
0041843A |. 74 51 je short ASFConve.0041848D
0041843C |. 807D 00 00 cmp byte ptr ss:[ebp],0
00418440 |. 74 4B je short ASFConve.0041848D
00418442 |. 8B7C24 18 mov edi,dword ptr ss:[esp+18]
00418446 |. 85FF test edi,edi
00418448 |. 74 43 je short ASFConve.0041848D
0041844A |. 803F 00 cmp byte ptr ds:[edi],0
0041844D |. 74 3E je short ASFConve.0041848D
0041844F |. 68 EC914600 push ASFConve.004691EC ; /armaccess.dll
00418454 |. 33DB xor ebx,ebx ; |
00418456 |. FF15 64634500 call dword ptr ds:[<&KERNEL32.LoadLibrar>; \LoadLibraryA
0041845C |. 8BF0 mov esi,eax
0041845E |. 85F6 test esi,esi
00418460 |. 74 2B je short ASFConve.0041848D ;
00418462 |. 68 FC914600 push ASFConve.004691FC ; /installkey
00418467 |. 56 push esi ; |hModule
00418468 |. FF15 68634500 call dword ptr ds:[<&KERNEL32.GetProcAdd>; \GetProcAddress
0041846E |. 85C0 test eax,eax
00418470 |. 74 0D je short ASFConve.0041847F
00418472 |. 57 push edi
00418473 |. 55 push ebp
00418474 |. FFD0 call eax
00418476 |. 84C0 test al,al
00418478 |. 74 05 je short ASFConve.0041847F
0041847A |. BB 01000000 mov ebx,1
0041847F |> 56 push esi ; /hLibModule
00418480 |. FF15 60634500 call dword ptr ds:[<&KERNEL32.FreeLibrar>; \FreeLibrary
00418486 |. 5F pop edi
00418487 |. 5E pop esi
00418488 |. 8BC3 mov eax,ebx
0041848A |. 5D pop ebp
0041848B |. 5B pop ebx
0041848C |. C3 retn
0041848D |> 5F pop edi
0041848E |. 5E pop esi
0041848F |. 5D pop ebp
00418490 |. 33C0 xor eax,eax
00418492 |. 5B pop ebx
00418493 \. C3 retn
我本想看哪个可以改,使eax为1,可是怎么找也找不到。追了很久也是没用。该怎么办。
软件的地址我奉上,里面的die那个是脱壳的,另外那个是没脱的,想练手的可以练下。
http://d.namipan.com/d/181549977 ... 38bb0a6084474503a00 |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|