00401269 . C705 D9124000>mov dword ptr ds:[<四字节代码>],0x584554 ; 初始化代码数据
00401273 . 6A 00 push 0x0 ;
/IsSigned
= FALSE
00401275 . 8D45 FC lea eax,dword ptr ss:[ebp-0x4] ; |
00401278 . 50 push eax ; |pSuccess
00401279 . 6A 64 push 0x64 ; |ControlID = 64 (100.)
0040127B . FF35 50314000 push dword ptr ds:[0x403150] ; |hWnd = 00050612 (
'TEXme v2.0'
,class=
'CTEX'
)
00401281 . E8 BC010000 call <jmp.&USER32.GetDlgItemInt> ; \GetDlgItemInt
00401286 . 837D FC 00
cmp
dword ptr ss:[ebp-0x4],0x0
0040128A . 74 5F je XChafe_2.004012EB
0040128C . 50 push eax ; 密码框的int值
0040128D . 6A 14 push 0x14 ;
/Count
= 14 (20.)
0040128F . 68 6C314000 push Chafe_2.0040316C ; |用户名的ASCII
00401294 . FF35 54314000 push dword ptr ds:[0x403154] ; |hWnd = 00050614 (class=
'Edit'
,parent=00050612)
0040129A . E8 AF010000 call <jmp.&USER32.GetWindowTextA> ; \GetWindowTextA
0040129F . 85C0
test
eax,eax
004012A1 . 74 48 je XChafe_2.004012EB
004012A3 . A1 0B304000 mov eax,dword ptr ds:[<全局变量0>]
004012A8 . BB 6C314000 mov ebx,Chafe_2.0040316C ; 存放用户名地址
004012AD . 0303 add eax,dword ptr ds:[ebx]
004012AF . 43 inc ebx
004012B0 . 81FB 7C314000
cmp
ebx,Chafe_2.0040317C
004012B6 . 75 F5 jnz XChafe_2.004012AD ; 58455443循环加用户名DWORD
004012B8 . 5B pop ebx
004012B9 . 03C3 add eax,ebx ; 密码框的int值相加
004012BB . 3105 D9124000 xor dword ptr ds:[<四字节代码>],eax ; 原始代码与运算后的值异或
004012C1 . C1E8 10 shr eax,0x10
004012C4 . 66:2905 D9124>sub word ptr ds:[<四字节代码>],ax ; 减去右移16次的word值
004012CB . BE EC114000 mov esi,Chafe_2.004011EC
004012D0 . B9 3E000000 mov ecx,0x3E ; 算法2的计数器
004012D5 . 33DB xor ebx,ebx
004012D7 . EB 04 jmp XChafe_2.004012DD ; -----jmp算法2-----
004012D9 . 54 push esp ; 这里的代码每次都会初始化为
004012DA 45 db 45 ; 0x00584554
004012DB 58 db 58
004012DC 00 db 00
004012DD . AD lods dword ptr ds:[esi] ; ---算法2---