miracl库函数调用问题求助

miracl库函数调用问题求助,第1张

有些朋友问起这个,所以,我在这里写出自己的方法和大家一起探讨。如果谁有更好的方法,也希望能贴出来和大家分享。

2  以miracl库为例。

工具

1  IDA 50 Adv 500879

2  CryptoSIGv20

3  OllyDbg v110

4  我的第14个CrackMe_0014及其源代码RSAc

5  PdriLl的KenGenMe nr2

6  《加密与解密II》配套光盘中chap06的一个例子 RSA_CrackMe

自动定位

以CrackMe_0014为例。我的建议是你自己先至少粗略分析一下这3个CrackMe,以了解其加密流程,后面可能更好理解我试图要阐述的东西。

1  把CryptoSIGsig文件拷贝到IDA的sig目录下;

2  用IDA载入程序,等待它分析完后在IDA View-A窗口内右键切换到Text View模式;

3  按Shift + F5键调出List of applied library modules窗口;

4  右键选择Apply new signature或者按Insert键d出如下窗口

5  选择CryptoSIG,点击OK

总共有55个函数被重新标识。

你可能留意到了HTBTeam小组,感谢他们为我们带来这么好的东东吧J

6  在IDA的File菜单中选择Produce file à Create MAP file保存之;

7  用Ollydbg 载入程序,在菜单中选择 插件àLoad MapàLoad Map File后,来到看看。

脱壳作者 manbug

使用工具 OllyDBG ,LordPE,ImportREC,PEiD

脱壳平台 WinXP SP2

软件名称 Bigman's Crackme6(看雪2007精华里面的)

软件大小 7K

加壳方式 ASPack 2x (without poly) -> Alexey Solodovnikov [Overlay]

虽然现在的脱壳机很多,我是初学者,为了煅炼一下自己的手动能力,所以将自己脱壳的过程写下来与大家分享,不对之处请指正

用OD载入程序:

00405001 > E8 03000000 call crackme600405009 ; 加载后停在这里,按F7

00405007 /EB 04 jmp short crackme60040500D

00405009 |5D pop ebp

0040500A |45 inc ebp

0040500B |55 push ebp

0040500C |C3 retn

0040500D \90 nop

0040500E E8 01000000 call crackme600405014 ; F7跟进

00405014 5D pop ebp ; 以下按F8单步走,如有向上跳转用F4打断

00405015 BB EDFFFFFF mov ebx, -13

0040501A 03DD add ebx, ebp

0040501C 81EB 00500000 sub ebx, 5000

00405022 83BD 22040000 0>cmp dword ptr [ebp+422], 0

00405029 899D 22040000 mov dword ptr [ebp+422], ebx

0040502F 0F85 65030000 jnz crackme60040539A

00405035 8D85 2E040000 lea eax, dword ptr [ebp+42E]

0040503B 50 push eax

0040503C FF95 4D0F0000 call near dword ptr [ebp+F4D]

00405042 8985 26040000 mov dword ptr [ebp+426], eax

00405048 8BF8 mov edi, eax

0040504A 8D5D 5E lea ebx, dword ptr [ebp+5E]

0040513A 3C E9 cmp al, 0E9

0040513C 74 04 je short crackme600405142

0040513E 43 inc ebx

0040513F 49 dec ecx

00405140 ^ EB EB jmp short crackme60040512D

00405142 8B06 mov eax, dword ptr [esi] ; F4 打断向上跳转

00405144 EB 00 jmp short crackme600405146

00405146 803E 00 cmp byte ptr [esi], 0

00405149 ^ 75 F3 jnz short crackme60040513E

0040514B 24 00 and al, 0

0040514D C1C0 18 rol eax, 18

00405150 2BC3 sub eax, ebx

00405152 8906 mov dword ptr [esi], eax

00405154 83C3 05 add ebx, 5

00405157 83C6 04 add esi, 4

0040515A 83E9 05 sub ecx, 5

0040515D ^ EB CE jmp short crackme60040512D

0040515F 5B pop ebx ; F4 打断向上跳转

00405160 5E pop esi

00405161 59 pop ecx

0040519D 83C6 08 add esi, 8

004051A0 833E 00 cmp dword ptr [esi], 0

004051A3 ^ 0F85 1EFFFFFF jnz crackme6004050C7

004051A9 68 00800000 push 8000 ; F4 打断向上跳转

004051AE 6A 00 push 0

00405376 8907 mov dword ptr [edi], eax

00405378 8385 49050000 0>add dword ptr [ebp+549], 4

0040537F ^ E9 32FFFFFF jmp crackme6004052B6

00405384 8906 mov dword ptr [esi], eax ; F4 打断向上跳转

00405386 8946 0C mov dword ptr [esi+C], eax

00405389 8946 10 mov dword ptr [esi+10], eax

0040538C 83C6 14 add esi, 14

0040538F 8B95 22040000 mov edx, dword ptr [ebp+422]

00405395 ^ E9 EBFEFFFF jmp crackme600405285

0040539A B8 CB110000 mov eax, 11CB ; F4 打断向上跳转

0040539F 50 push eax

004053A0 0385 22040000 add eax, dword ptr [ebp+422]

004053A6 59 pop ecx

004053A7 0BC9 or ecx, ecx

004053A9 8985 A8030000 mov dword ptr [ebp+3A8], eax

004053AF 61 popad ; 关键句了,嘿嘿

004053B0 75 08 jnz short crackme6004053BA

004053B2 B8 01000000 mov eax, 1

004053B7 C2 0C00 retn 0C

004053BA 68 CB114000 push crackme6004011CB ; 入口点就是004011CB了啊

004053BF C3 retn ; F8单步返回就是入口点了

004011CB 64:A1 0100000>mov eax, dword ptr fs:[1] ; SFX 代码真正入口点,停在这里脱壳

004011D1 / 55 push ebp

004011D2 | 89E5 mov ebp, esp

004011D4 | 6A FF push -1

004011D6 | 68 1C204000 push crackme60040201C

004011DB | 68 9A104000 push crackme60040109A

004011E0 | 50 push eax

用lordpe进步脱壳啦,这个大家都会吧,呵呵

脱壳之后用Import REC修正,在OEP中填11CB,点AutoSearch,点Get Imports,发现只有6个导入函数,肯定不对啦,那就要手动找一下输入表了看自动找到输入表的RVA为03138,加上基址400000就是403138,在OD 的数据窗口中转到403138的地址处,向上翻,果然还有数据,起地址为4030A4,止地址为4032BE,大小为21A,于是将Import REC中的 IAT RVA填入30A4,Size填21A,再点Get Imports就可以找到很多导入函数了,不过还有一些无效的,不要紧,点击show Invalid 将无效的函数CUT掉,然后FIX DUMP你的脱壳文件就行了,一切搞定,脱壳运行正常

当然找这个壳的入口点还有一种简单的方法,就是在OD中忽略所有异常,在SFX选项中选中字节方式跟踪真正入口点处,然后载入程序,过一会就可以停在真正的入口点了

以上就是关于miracl库函数调用问题求助全部的内容,包括:miracl库函数调用问题求助、ASProtect2.2版的壳怎么脱、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10134185.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存