Sublime Text 2.0 简单分析
HomePage:http://www.sublimetext.com/一款非常优秀的代码编写器,近乎是免费的,简单看下验证流程。
搜索unicode : unreg
013AE8BA|.BE 8C9E6001 mov esi, 01609E8C ;sublime text 2
013AE8BF|.DD58 10 fstp qword ptr
013AE8C2|.DD58 18 fstp qword ptr
013AE8C5|.E8 46FEFFFF call 013AE710
013AE8CA|.83C4 2C add esp, 2C
013AE8CD|.803D 88076C01>cmp byte ptr , 0// 对这个全局变量下硬件访问断点
013AE8D4|.0F84 0D020000 je 013AEAE7 // 跳转来自于这里
......
013AEAE5|. /EB 63 jmp short 013AEB4A
013AEAE7|> |DD4424 40 fld qword ptr
013AEAEB|. |8B5424 2C mov edx, dword ptr
013AEAEF|. |DD05 D0376001 fld qword ptr
013AEAF5|. |8B7A 64 mov edi, dword ptr
013AEAF8|. |DCC1 fadd st(1), st
013AEAFA|. |B0 FF mov al, 0FF
013AEAFC|. |884424 28 mov byte ptr , al
013AEB00|. |884424 29 mov byte ptr , al
013AEB04|. |DEC1 faddp st(1), st
013AEB06|. |884424 2A mov byte ptr , al
013AEB0A|. |884424 2B mov byte ptr , al
013AEB0E|. |8B4C24 28 mov ecx, dword ptr
013AEB12|. |51 push ecx
013AEB13|. |83EC 28 sub esp, 28
013AEB16|. |DD5C24 20 fstp qword ptr
013AEB1A|. |8BC4 mov eax, esp
013AEB1C|. |DD4424 74 fld qword ptr
013AEB20|. |BE 6C9E6001 mov esi, 01609E6C ;unregistered
<div class="blockcode"><blockquote>
启动时中断在这里:
002CEDE2 .E8 C9BBFFFF call 002CA9B0
002CEDE7 .83C4 0C add esp, 0C
002CEDEA .8D4C24 04 lea ecx, dword ptr
002CEDEE .A2 88075800 mov byte ptr , al // 典型的全局变量验证模型
002CEDF3 .C74424 28 FFFFFFFF mov dword ptr , -1
提取一组特征码:
E8 ?? ?? ?? ?? 83 C4 0C 8D 4C 24 04 A2 ?? ?? ?? ?? C7 44 24 28 FF FF FF FF
跟进Call 看一下:
本地调用来自 002CB321, 002CEDE2// 两处调用 应该是一处注册 一处启动验证
002CA9B0/[ DISCUZ_CODE_1 ]nbsp; 6A FF push -1
002CA9B2|.68 C4C84A00 push 004AC8C4 ;SE 处理程序安装
002CA9B7|.64:A1 0000000>mov eax, dword ptr fs:
002CA9BD|.50 push eax
002CA9BE|.64:8925 00000>mov dword ptr fs:, esp
002CA9C5|.83EC 74 sub esp, 74
002CA9C8|.53 push ebx
002CA9C9|.68 98E04C00 push 004CE098 ;30819d300d06092a864886f70d010101050003818b0030818702818100d87ba24562f7c5d14a0cfb12b9740c195c6bdc7e6d6ec92bac0eb29d59e1d9ae67890c2b88c3abdcaffe7d4a33dcc1bfbe531a251cef0c923f06be79b2328559acfee986d5e15e4d1766ea56c4e10657fa74db0977c3fb7582b78cd47bb2c7f9b2 ..
... ...
// 这是什么算法 ... 算法直接跳过看返回值
002CAA50|.68 90E04C00 push 004CE090 ;ea7e
002CAA55|.50 push eax
002CAA56|.FF15 84234C00 call dword ptr [<&MSVCP90.std::operat>;MSVCP90.std::operator!=<char,std::char_traits<char>,std::allocator<char> >
002CAA5C|.83C4 08 add esp, 8
002CAA5F|.84C0 test al, al
002CAA61|.74 07 je short 002CAA6A
002CAA63|>32DB xor bl, bl
002CAA65|.E9 A0020000 jmp 002CAD0A
002CAA6A|>837C24 20 10 cmp dword ptr , 10
002CAA6F|.8B4424 0C mov eax, dword ptr
002CAA73|.73 04 jnb short 002CAA79
002CAA75|.8D4424 0C lea eax, dword ptr
002CAA79|>50 push eax ; /s
002CAA7A|.FF15 D0264C00 call dword ptr [<&MSVCR90.atoi>] ; \atoi
.....
/// 看函数返回值
002CAD55|.8B4C24 78 mov ecx, dword ptr
002CAD59|.8AC3 mov al, bl// 爆破点mov al,1
002CAD5B|.5B pop ebx
002CAD5C|.64:890D 00000000 mov dword ptr fs:, ecx
002CAD63|.81C4 80000000 add esp, 80
002CAD69\.C3 retn
提取特征码:
8B 4C 24 78 8A C3 5B 64 89 0D 00 00 00 00 81 C4 80 00 00 00 C3
8B 4C 24 78 B0 01 5B 64 89 0D 00 00 00 00 81 C4 80 00 00 00 C3
定位特征码逆向 还是选取算法call的返回值时机。
[快捷回复]-感谢楼主热心分享! 受教了收藏学习一波 感谢大佬分享,吾爱因你而精彩! 感谢楼主,马上尝试一下! 感谢楼主,马上尝试一下! 嗯嗯 很感谢楼主的教程!
页:
[1]