首页
社区
课程
招聘
[求助]如何定位CRC32算法代码位置
发表于: 2013-4-17 10:20 6999

[求助]如何定位CRC32算法代码位置

2013-4-17 10:20
6999
破解辅助计算器_手动脱壳.exe => 手动脱壳后的文件

请问,如何在脱壳后的文件中找到crc32算法部分的代码?Ollydbg用消息断点(对“计算字串”下消息断点)调试,但是没法返回到程序领空,哪位朋友可以帮忙看下?谢谢!

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 1839
活跃值: (295)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
2
+ 读取字符串的关键几个call
1002BAA6    50              push    eax
1002BAA7    E8 43380800     call    100AF2EF                         ; 得到字符串和长度
1002BAAC    8B5424 20       mov     edx, dword ptr [esp+20]

100AF2EF    56              push    esi
100AF2F0    8BF1            mov     esi, ecx
100AF2F2    8B4E 38         mov     ecx, dword ptr [esi+38]
100AF2F5    85C9            test    ecx, ecx
100AF2F7    75 2E           jnz     short 100AF327
100AF2F9    FF76 1C         push    dword ptr [esi+1C]
100AF2FC    FF15 3C350C10   call    dword ptr [<&USER32.GetWindowTex>; user32.GetWindowTextLengthA
100AF302    8D48 01         lea     ecx, dword ptr [eax+1]
100AF305    51              push    ecx
100AF306    8B4C24 0C       mov     ecx, dword ptr [esp+C]
100AF30A    50              push    eax
100AF30B    E8 6B2C0000     call    100B1F7B
100AF310    50              push    eax
100AF311    FF76 1C         push    dword ptr [esi+1C]
100AF314    FF15 40350C10   call    dword ptr [<&USER32.GetWindowTex>; 得到字符串
100AF31A    8B4C24 08       mov     ecx, dword ptr [esp+8]
100AF31E    6A FF           push    -1
100AF320    E8 2E2C0000     call    100B1F53                         ; 得到字符串长度
100AF325    EB 0C           jmp     short 100AF333

+ 最上层的读取字符串,计算,打印过程。。。。。。
0041D4F9    68 40924000     push    00409240
0041D4FE    FF75 FC         push    dword ptr [ebp-4]
0041D501    E8 0FD0FFFF     call    0041A515           ;计算crc
    参数:
        0012F2C8   0041D506  返回到 破解辅助.0041D506 来自 破解辅助.0041A515
        0012F2CC   00204E38  ASCII "321321321321321321321321"
        0012F2D0   00409240  破解辅助.00409240

0041D4F9    68 40924000     push    00409240
0041D4FE    FF75 FC         push    dword ptr [ebp-4]
0041D501    E8 0FD0FFFF     call    0041A515
0041D506    83C4 08         add     esp, 8
0041D509    83F8 00         cmp     eax, 0
0041D50C    B8 00000000     mov     eax, 0
0041D511    0F94C0          sete    al
0041D514    8945 F8         mov     dword ptr [ebp-8], eax
0041D517    8B5D FC         mov     ebx, dword ptr [ebp-4]
0041D51A    85DB            test    ebx, ebx
0041D51C    74 09           je      short 0041D527
0041D51E    53              push    ebx
0041D51F    E8 3E740000     call    00424962
0041D524    83C4 04         add     esp, 4
0041D527    837D F8 00      cmp     dword ptr [ebp-8], 0
0041D52B    0F84 0A000000   je      0041D53B
0041D531    E9 1F010000     jmp     0041D655
0041D536    E9 1A010000     jmp     0041D655
0041D53B    6A FF           push    -1
0041D53D    6A 08           push    8
0041D53F    68 054F0116     push    16014F05
0041D544    68 01000152     push    52010001
0041D549    E8 20740000     call    0042496E
0041D54E    83C4 10         add     esp, 10
0041D551    8945 FC         mov     dword ptr [ebp-4], eax
0041D554    68 04000080     push    80000004
0041D559    6A 00           push    0
0041D55B    8B45 FC         mov     eax, dword ptr [ebp-4]
0041D55E    85C0            test    eax, eax
0041D560    75 05           jnz     short 0041D567
0041D562    B8 40924000     mov     eax, 00409240
0041D567    50              push    eax
0041D568    68 01000000     push    1
0041D56D    BB 30010000     mov     ebx, 130
0041D572    E8 E5730000     call    0042495C
0041D577    83C4 10         add     esp, 10
0041D57A    8945 F8         mov     dword ptr [ebp-8], eax
0041D57D    8B5D FC         mov     ebx, dword ptr [ebp-4]
0041D580    85DB            test    ebx, ebx
0041D582    74 09           je      short 0041D58D
0041D584    53              push    ebx
0041D585    E8 D8730000     call    00424962
0041D58A    83C4 04         add     esp, 4
0041D58D    6A FF           push    -1
0041D58F    6A 08           push    8
0041D591    68 054F0116     push    16014F05
0041D596    68 01000152     push    52010001
0041D59B    E8 CE730000     call    0042496E
0041D5A0    83C4 10         add     esp, 10
0041D5A3    8945 F4         mov     dword ptr [ebp-C], eax
0041D5A6    8965 F0         mov     dword ptr [ebp-10], esp
0041D5A9    FF75 F8         push    dword ptr [ebp-8]
0041D5AC    FF75 F4         push    dword ptr [ebp-C]
0041D5AF    68 00000000     push    0
0041D5B4    B8 00000000     mov     eax, 0
0041D5B9    E8 BC730000     call    0042497A
0041D5BE    3965 F0         cmp     dword ptr [ebp-10], esp
0041D5C1    74 0D           je      short 0041D5D0
0041D5C3    68 06000000     push    6
0041D5C8    E8 89730000     call    00424956
0041D5CD    83C4 04         add     esp, 4
0041D5D0    8945 EC         mov     dword ptr [ebp-14], eax
0041D5D3    8B5D F4         mov     ebx, dword ptr [ebp-C]
0041D5D6    85DB            test    ebx, ebx
0041D5D8    74 09           je      short 0041D5E3
0041D5DA    53              push    ebx
0041D5DB    E8 82730000     call    00424962
0041D5E0    83C4 04         add     esp, 4
0041D5E3    68 01030080     push    80000301
0041D5E8    6A 00           push    0
0041D5EA    FF75 EC         push    dword ptr [ebp-14]
0041D5ED    68 01000000     push    1
0041D5F2    BB D4010000     mov     ebx, 1D4
0041D5F7    E8 60730000     call    0042495C
0041D5FC    83C4 10         add     esp, 10
0041D5FF    8945 E8         mov     dword ptr [ebp-18], eax
0041D602    FF75 E8         push    dword ptr [ebp-18]
0041D605    68 D9924000     push    004092D9                         ; ASCII "0x"
0041D60A    B9 02000000     mov     ecx, 2
0041D60F    E8 0CDEFFFF     call    0041B420                         ; printf,打印结果

+ 计算crc
0041A53B    F7C2 03000000   test    edx, 3
0041A541    75 37           jnz     short 0041A57A                   ; 计算crc的关键算法
0041A543    8B02            mov     eax, dword ptr [edx]
0041A545    3A01            cmp     al, byte ptr [ecx]
0041A547    75 2B           jnz     short 0041A574
0041A549    0AC0            or      al, al
0041A54B    74 24           je      short 0041A571
0041A54D    3A61 01         cmp     ah, byte ptr [ecx+1]
0041A550    75 22           jnz     short 0041A574
0041A552    0AE4            or      ah, ah
0041A554    74 1B           je      short 0041A571
0041A556    C1E8 10         shr     eax, 10
0041A559    3A41 02         cmp     al, byte ptr [ecx+2]
0041A55C    75 16           jnz     short 0041A574
0041A55E    0AC0            or      al, al
0041A560    74 0F           je      short 0041A571
0041A562    3A61 03         cmp     ah, byte ptr [ecx+3]
0041A565    75 0D           jnz     short 0041A574
0041A567    83C1 04         add     ecx, 4
0041A56A    83C2 04         add     edx, 4
0041A56D    0AE4            or      ah, ah
0041A56F  ^ 75 D2           jnz     short 0041A543
0041A571    33C0            xor     eax, eax
0041A573    C3              retn
0041A574    1BC0            sbb     eax, eax
0041A576    D1E0            shl     eax, 1
0041A578    40              inc     eax
0041A579    C3              retn
0041A57A    F7C2 01000000   test    edx, 1
0041A580    74 14           je      short 0041A596
0041A582    8A02            mov     al, byte ptr [edx]
0041A584    42              inc     edx
0041A585    3A01            cmp     al, byte ptr [ecx]
0041A587  ^ 75 EB           jnz     short 0041A574
0041A589    41              inc     ecx
0041A58A    0AC0            or      al, al
0041A58C  ^ 74 E3           je      short 0041A571
0041A58E    F7C2 02000000   test    edx, 2
0041A594  ^ 74 AD           je      short 0041A543
0041A596    66:8B02         mov     ax, word ptr [edx]
0041A599    83C2 02         add     edx, 2
0041A59C    3A01            cmp     al, byte ptr [ecx]
0041A59E  ^ 75 D4           jnz     short 0041A574
0041A5A0    0AC0            or      al, al
0041A5A2  ^ 74 CD           je      short 0041A571
0041A5A4    3A61 01         cmp     ah, byte ptr [ecx+1]
0041A5A7  ^ 75 CB           jnz     short 0041A574
0041A5A9    0AE4            or      ah, ah
0041A5AB  ^ 74 C4           je      short 0041A571
0041A5AD    83C1 02         add     ecx, 2
0041A5B0  ^ EB 91           jmp     short 0041A543
2013-4-17 11:44
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
一般是在eax中返回的吧
2013-4-17 12:02
0
雪    币: 484
活跃值: (269)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
请教兄,是怎么找到下面这几个关键点的呢?谢谢!

+ 读取字符串的关键几个call
1002BAA6    50              push    eax

0041D4F9    68 40924000     push    00409240
0041D4FE    FF75 FC         push    dword ptr [ebp-4]
0041D501    E8 0FD0FFFF     call    0041A515           ;计算crc
2013-4-17 12:09
0
雪    币: 1847
活跃值: (1806)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
5
根据 0xEDB88320 定位
2013-4-17 12:16
0
雪    币: 196
活跃值: (135)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
6
41A53B不是用来计算CRC的,下面的函数才是:
上传的附件:
2013-4-17 12:23
0
雪    币: 484
活跃值: (269)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
7
请教兄:
<1> 如何一步步定位到41D5B9
<2> 这里的CRC32算法好像不是用的自己写的代码,而是某个标准库里的函数,是这样吗?
2013-4-17 12:32
0
雪    币: 484
活跃值: (269)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
8
终于在ntdll模块找到了熟悉的CRC32算法,7C983058开始的就是CRC32查找表

问题是,这种CRC32的调用是如何实现的,和krnln模块有什么关系?谁能帮我普及下基本知识?谢谢先 :-)

还有就是debug的时候,怎么定位到fosom兄、thinkSJ提到的关键函数?

7C983032    8B55 0C         MOV EDX,DWORD PTR SS:[EBP+C]
7C983035    0FB61411        MOVZX EDX,BYTE PTR DS:[ECX+EDX]
7C983039    33D0            XOR EDX,EAX
7C98303B    81E2 FF000000   AND EDX,0FF
7C983041    C1E8 08         SHR EAX,8
7C983044    330495 5830987C XOR EAX,DWORD PTR DS:[EDX*4+7C983058]
7C98304B    41              INC ECX
7C98304C    3B4D 10         CMP ECX,DWORD PTR SS:[EBP+10]
7C98304F  ^ 72 E1           JB SHORT ntdll.7C983032
2013-4-17 12:46
0
雪    币: 484
活跃值: (269)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
9
没搜到EDB88320啊,兄能再具体点不?谢谢:-)
2013-4-17 12:47
0
雪    币: 196
活跃值: (135)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
10
这个程序是用E语言写的,CRC的算法实现貌似是封装在它的模块中. 找一个E语言的工具可以很容易的定位到那个
按钮的响应函数.

PS: EDB88320 这个值是用来动态生成CRC32表的Key,但对于不同实现的CRC算法,这个值可能不太一样.
2013-4-17 13:15
0
雪    币: 484
活跃值: (269)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
11
用E-debug Events看到: 0041D4D7, 谢谢thinkSJ的指点:-)
上传的附件:
2013-4-17 22:14
0
雪    币: 484
活跃值: (269)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
12
感谢fosom兄、thinkSJ兄的帮助和指点,谢谢:-)
2013-4-17 22:20
0
游客
登录 | 注册 方可回帖
返回
//