- UID
- 54196
注册时间2008-7-2
阅读权限95
最后登录1970-1-1
超级版主
TA的每日心情 | 开心 2019-2-26 11:14 |
---|
签到天数: 459 天 [LV.9]以坛为家II
|
楼主 |
发表于 2015-4-17 17:48:13
|
显示全部楼层
本帖最后由 wgz001 于 2015-4-17 17:54 编辑
感谢楼上各位的分析 我看了后也总结了一下 不知道对不
OD载入后 bp MessageBoxA F9运行后,ALT+F9返回,出现消息框后点确定,中断在程序中
- 00405B6B |. 8945 E4 MOV DWORD PTR SS:[EBP-0x1C], EAX
- 00405B6E |. C745 FC FEFFF>MOV DWORD PTR SS:[EBP-0x4], -0x2
- 00405B75 |. E8 0B000000 CALL 00405B85 ; 错误检测
- 00405B7A |. 8B45 E4 MOV EAX, DWORD PTR SS:[EBP-0x1C]
- 00405B7D |> E8 5FB40100 CALL 00420FE1 ; 2015_nct.00420FE1
- 00405B82 \. C3 RETN
复制代码
00420FE1这个call修改了返回地址,不知道是怎么回事,继续往下走会来到这里,
- 004012FB > \BE 00010000 MOV ESI, 0x100
- 00401300 > 6A 00 PUSH 0x0
- 00401302 . 6A 00 PUSH 0x0
- 00401304 . 68 70894300 PUSH 0x438970 ; 小兄弟,搞基吗?
- 00401309 . E8 F84A0000 CALL 00405E06 ; 2015_nct.00405E06
- 0040130E . 83EE 01 SUB ESI, 0x1 ; 来到这里
- 00401311 .^ 75 ED JNZ SHORT 00401300 ; 2015_nct.00401300
- 00401313 . 5F POP EDI
- 00401314 . 8D46 01 LEA EAX, DWORD PTR DS:[ESI+0x1]
- 00401317 . 5E POP ESI
- 00401318 . C3 RETN
复制代码
此时ESI=0X100 也就在一个循环的次数,看来搞基0x100次后会有结果啊{:soso_e113:},正如大大说的一样,这里可以跳转后,F9出现另外一个画面,下断点,bp GetDlgItemTextA,输入假码"1234567890",点确定,中断后返回,
- 0040B471 |. 5D POP EBP ; 0012F82C
- 0040B472 |. C2 0C00 RETN 0xC
- 0040B475 |> 8B49 4C MOV ECX, DWORD PTR DS:[ECX+0x4C]
- 0040B478 |. 8B01 MOV EAX, DWORD PTR DS:[ECX]
- 0040B47A |. 5D POP EBP
- 0040B47B \. FF60 7C JMP NEAR DWORD PTR DS:[EAX+0x7C]
复制代码 此时一路F7,代码做了很多变形,不知道是怎么变的啊,
- 0040141F A1 3C524400 MOV EAX, DWORD PTR DS:[0x44523C] ; 注册码的地址
- 00401424 51 PUSH ECX
- 00401425 52 PUSH EDX
- 00401426 53 PUSH EBX
- 00401427 E8 00000000 CALL 0040142C ; 2015_nct.0040142C
- 0040142C 5A POP EDX ; 下面几句修改返回地址
- 0040142D 83C2 07 ADD EDX, 0x7
- 00401430 52 PUSH EDX
- 00401431 C3 RETN
复制代码 再往下面走,会看到很多变形的代码
- 00401441 8030 6E XOR BYTE PTR DS:[EAX], 0x6E
- 00401444 51 PUSH ECX
- 00401445 52 PUSH EDX
- 00401446 53 PUSH EBX
- 00401447 33DB XOR EBX, EBX
- 00401449 74 01 JE SHORT 0040144C ; 2015_nct.0040144C
- 0040144B - E9 5B5A5980 JMP 80996EAB
- 00401450 70 01 JO SHORT 00401453 ; 2015_nct.00401453
- 00401452 6251 52 BOUND EDX, QWORD PTR DS:[ECX+0x52]
- 00401455 53 PUSH EBX
- 00401456 33DB XOR EBX, EBX
- 00401458 74 01 JE SHORT 0040145B ; 2015_nct.0040145B
- 0040145A 59 POP ECX
- 0040145B 5B POP EBX
- 0040145C 5A POP EDX
- 0040145D 59 POP ECX
- 0040145E 8070 02 76 XOR BYTE PTR DS:[EAX+0x2], 0x76
- 00401462 51 PUSH ECX
- 00401463 52 PUSH EDX
- 00401464 53 PUSH EBX
- 00401465 33DB XOR EBX, EBX
- 00401467 74 01 JE SHORT 0040146A ; 2015_nct.0040146A
- 00401469 50 PUSH EAX
- 0040146A 5B POP EBX
- 0040146B 5A POP EDX
- 0040146C 59 POP ECX
- 0040146D 8070 03 65 XOR BYTE PTR DS:[EAX+0x3], 0x65
- 00401471 51 PUSH ECX
复制代码 XOR BYTE PTR DS:[EAX+XX], 0x6E-------这样的代码就是在解密注册码,其中好多指令被修改成如E9 5B 5A 59 80,第一个字节被改成了E9,这个就是花指令么,E9改成59或58后代码还原了,谢谢大大们的指点,不修改也可以调试,不影响,走到下面算法的位置处
- 0040156C 8B0D 3C524400 MOV ECX, DWORD PTR DS:[0x44523C]
- 00401572 0FB611 MOVZX EDX, BYTE PTR DS:[ECX] ; 取注册码解密后的第一位----EDX中
- 00401575 85D2 TEST EDX, EDX
- 00401577 75 4A JNZ SHORT 004015C3 ; 2015_nct.004015C3
- 00401579 C645 FF 00 MOV BYTE PTR SS:[EBP-0x1], 0x0
- 0040157D EB 08 JMP SHORT 00401587 ; 2015_nct.00401587
- 0040157F 8A45 FF MOV AL, BYTE PTR SS:[EBP-0x1] ; 注册码的位数------>AL
- 00401582 04 01 ADD AL, 0x1 ; 下一位
- 00401584 8845 FF MOV BYTE PTR SS:[EBP-0x1], AL
- 00401587 0FB64D FF MOVZX ECX, BYTE PTR SS:[EBP-0x1] ; EBP-1中保存注册码位数
- 0040158B 83F9 14 CMP ECX, 0x14 ; 是否20位全部取完
- 0040158E 7D 33 JGE SHORT 004015C3 ; 2015_nct.004015C3
- 00401590 0FB655 FF MOVZX EDX, BYTE PTR SS:[EBP-0x1] ; 注册码的位数保存---->EDX
- 00401594 0FB645 FF MOVZX EAX, BYTE PTR SS:[EBP-0x1]
- 00401598 8B0D 3C524400 MOV ECX, DWORD PTR DS:[0x44523C]
- 0040159E 0FB60401 MOVZX EAX, BYTE PTR DS:[ECX+EAX] ; 取注册码解密后的第EAX位----->EAX
- 004015A2 3BD0 CMP EDX, EAX ; 比较解密后的该位的值与对应的位数是否相等
- 004015A4 75 19 JNZ SHORT 004015BF ; 2015_nct.004015BF
- 004015A6 0FB64D FF MOVZX ECX, BYTE PTR SS:[EBP-0x1] ; 位数----ECX中
- 004015AA 83F9 13 CMP ECX, 0x13 ; 是否比较结束
- 004015AD 75 0E JNZ SHORT 004015BD ; 2015_nct.004015BD
- 004015AF 6A 00 PUSH 0x0
- 004015B1 6A 00 PUSH 0x0
- 004015B3 68 84894300 PUSH 0x438984 ; success!
复制代码 好多的代码不知道怎么变形来的{:soso_e154:},这个大大们再指点下呗
再次感谢各位大大们的指点,小菜菜一步一步往前爬{:soso_e182:}
|
|