首页
社区
课程
招聘
汇编的逆向真难?
2004-10-24 09:45 5033

汇编的逆向真难?

2004-10-24 09:45
5033
004014A0  /$  51            PUSH ECX
004014A1  |.  8B4424 0C     MOV EAX,DWORD PTR SS:[ESP+C]
004014A5  |.  57            PUSH EDI
004014A6  |.  33FF          XOR EDI,EDI
004014A8  |.  85C0          TEST EAX,EAX
004014AA  |.  0F86 CF000000 JBE asdegame.0040157F
004014B0  |.  53            PUSH EBX
004014B1  |.  55            PUSH EBP
004014B2  |.  8B6C24 14     MOV EBP,DWORD PTR SS:[ESP+14]
004014B6  |.  56            PUSH ESI
004014B7  |>  8B59 04       /MOV EBX,DWORD PTR DS:[ECX+4]
004014BA  |.  8B51 08       |MOV EDX,DWORD PTR DS:[ECX+8]
004014BD  |.  83E3 01       |AND EBX,1
004014C0  |.  C64424 18 00  |MOV BYTE PTR SS:[ESP+18],0
004014C5  |.  895C24 10     |MOV DWORD PTR SS:[ESP+10],EBX
004014C9  |.  83E2 01       |AND EDX,1
004014CC  |.  BE 08000000   |MOV ESI,8
004014D1  |.  EB 04         |JMP SHORT asdegame.004014D7
004014D3  |>  8B5C24 10     |/MOV EBX,DWORD PTR SS:[ESP+10]
004014D7  |>  8B01          | MOV EAX,DWORD PTR DS:[ECX]
004014D9  |.  A8 01         ||TEST AL,1
004014DB  |.  74 41         ||JE SHORT asdegame.0040151E
004014DD  |.  8B59 0C       ||MOV EBX,DWORD PTR DS:[ECX+C]
004014E0  |.  33D8          ||XOR EBX,EAX
004014E2  |.  8B41 24       ||MOV EAX,DWORD PTR DS:[ECX+24]
004014E5  |.  D1EB          ||SHR EBX,1
004014E7  |.  0BD8          ||OR EBX,EAX
004014E9  |.  8B41 04       ||MOV EAX,DWORD PTR DS:[ECX+4]
004014EC  |.  A8 01         ||TEST AL,1
004014EE  |.  8919          ||MOV DWORD PTR DS:[ECX],EBX
004014F0  |.  74 1A         ||JE SHORT asdegame.0040150C
004014F2  |.  8B59 10       ||MOV EBX,DWORD PTR DS:[ECX+10]
004014F5  |.  33D8          ||XOR EBX,EAX
004014F7  |.  8B41 28       ||MOV EAX,DWORD PTR DS:[ECX+28]
004014FA  |.  D1EB          ||SHR EBX,1
004014FC  |.  0BD8          ||OR EBX,EAX
004014FE  |.  8959 04       ||MOV DWORD PTR DS:[ECX+4],EBX
00401501  |.  BB 01000000   ||MOV EBX,1
00401506  |.  895C24 10     ||MOV DWORD PTR SS:[ESP+10],EBX
0040150A  |.  EB 44         ||JMP SHORT asdegame.00401550
0040150C  |>  8B59 1C       ||MOV EBX,DWORD PTR DS:[ECX+1C]
0040150F  |.  D1E8          ||SHR EAX,1
00401511  |.  23C3          ||AND EAX,EBX
00401513  |.  33DB          ||XOR EBX,EBX
00401515  |.  8941 04       ||MOV DWORD PTR DS:[ECX+4],EAX
00401518  |.  895C24 10     ||MOV DWORD PTR SS:[ESP+10],EBX
0040151C  |.  EB 32         ||JMP SHORT asdegame.00401550
0040151E  |>  8B51 18       ||MOV EDX,DWORD PTR DS:[ECX+18]
00401521  |.  D1E8          ||SHR EAX,1
00401523  |.  23C2          ||AND EAX,EDX
00401525  |.  8901          ||MOV DWORD PTR DS:[ECX],EAX
00401527  |.  8B41 08       ||MOV EAX,DWORD PTR DS:[ECX+8]
0040152A  |.  A8 01         ||TEST AL,1
0040152C  |.  74 16         ||JE SHORT asdegame.00401544
0040152E  |.  8B51 14       ||MOV EDX,DWORD PTR DS:[ECX+14]
00401531  |.  33D0          ||XOR EDX,EAX
00401533  |.  8B41 2C       ||MOV EAX,DWORD PTR DS:[ECX+2C]
00401536  |.  D1EA          ||SHR EDX,1
00401538  |.  0BD0          ||OR EDX,EAX
0040153A  |.  8951 08       ||MOV DWORD PTR DS:[ECX+8],EDX
0040153D  |.  BA 01000000   ||MOV EDX,1
00401542  |.  EB 0C         ||JMP SHORT asdegame.00401550
00401544  |>  8B51 20       ||MOV EDX,DWORD PTR DS:[ECX+20]
00401547  |.  D1E8          ||SHR EAX,1
00401549  |.  23C2          ||AND EAX,EDX
0040154B  |.  33D2          ||XOR EDX,EDX
0040154D  |.  8941 08       ||MOV DWORD PTR DS:[ECX+8],EAX
00401550  |>  8AC2          ||MOV AL,DL
00401552  |.  32C3          ||XOR AL,BL
00401554  |.  8A5C24 18     ||MOV BL,BYTE PTR SS:[ESP+18]
00401558  |.  D0E3          ||SHL BL,1
0040155A  |.  0AC3          ||OR AL,BL
0040155C  |.  4E            ||DEC ESI
0040155D  |.  884424 18     ||MOV BYTE PTR SS:[ESP+18],AL
00401561  |.^ 0F85 6CFFFFFF |\JNZ asdegame.004014D3
00401567  |.  8A1C2F        |MOV BL,BYTE PTR DS:[EDI+EBP]
0040156A  |.  32D8          |XOR BL,AL
0040156C  |.  8B4424 1C     |MOV EAX,DWORD PTR SS:[ESP+1C]
00401570  |.  881C2F        |MOV BYTE PTR DS:[EDI+EBP],BL
00401573  |.  47            |INC EDI
00401574  |.  3BF8          |CMP EDI,EAX
00401576  |.^ 0F82 3BFFFFFF \JB asdegame.004014B7
0040157C  |.  5E            POP ESI
0040157D  |.  5D            POP EBP
0040157E  |.  5B            POP EBX
0040157F  |>  5F            POP EDI
00401580  |.  59            POP ECX
00401581  \.  C2 0800       RETN 8

上面这段代码我看的糊里糊涂,搞手指点一下。

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

收藏
点赞1
打赏
分享
最新回复 (5)
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bluecrest8 2004-10-24 10:17
2
0
补充说明 该过程的输入参数是字符串和字符串长度

ECX+0,ECX+4,ECX+8存放了3个随机数,ECX+24,ECX+28,ECX+2C存放了几个固定的数。

DEC ESI这里的ESI是由8开始递减。

我估计这个是一是边锋游戏大厅对字符串加密的过程。希望高手指点。
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bluecrest8 2004-10-24 10:32
3
0
解密后的数据存在 入口参数里 替换了原来得字符串
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2004-10-24 10:40
4
0
个人的一些看法:
   
    里面的2层小循环是关键。最里面的小循环处理单个元素。外面一层处理数据串。

0040155C  |.  4E            ||DEC ESI

00401573  |.  47            |INC EDI

这2个是处理指针。

你再看看:
0040156C  |.  8B4424 1C     |MOV EAX,DWORD PTR SS:[ESP+1C]

00401574  |.  3BF8          |CMP EDI,EAX

说明这个函数(F12出来)把需要处理的数据长度作为参数传了过来,也就是说这个函数应该很重要。

最后再看看小循环中对大量的[ecx+x]进行的操作,而不是对[esi+x]或者[edi+x]进行操作,并且ecx不是从堆栈传过来的,也就是说ecx虽然是主要被处理对象,但是却不是从参数中过来的(除非这个东西用Delphi写的,但是你说得边锋游戏估计是VC写的),说明什么呢?说明这个函数不过是算法中的一个小步骤。用来处理[ecx+x]数组罢拉。真正被处理的数据流应该还在后头。
    我也就能看出来这么多。或许高手看出来更多。

PS: 以后不要发这些大段代码了,大家都忙,没有动态调试,谁看的明白阿。
雪    币: 7
活跃值: (30)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
Meteo 2004-10-24 10:53
5
0
upup
nbw发威啦
:D :D
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bluecrest8 2004-10-24 11:46
6
0
谢谢高人指点
游客
登录 | 注册 方可回帖
返回