| 关键词: nbsp 0045 017F ECX PUSH EDX MOV EBX w32dasm ESI |
毫无疑问,w32dasm 是我们的武器。哪一位破客离得了它呀!IDA虽号称最强大,但我一般不愿去碰它。 (w32dasm我用的是自制的白金版, 不象所谓的黄金版有一个丑陋的小黑窗口) 不过,w32dasm有太多地方需要完善。当反汇编有中文字串的软件时,遇到的一个显著问题是中文串都以乱码显示, 这可是大大的不好! 现在让我们来解决它! 首先,用w32dasm 反汇编一个软件(如:notepad.exe), 然后, 然后怎么呢?当然是按下Ctrl-D祭出我们的 终极法宝softice啦,下断: bpx gdi32!textout F5后随便在w32dasm中移动一下光标,softice便拦截下来 按下F12就回到了 下面45E77E处。把附近的代码稍稍细看一下就会发现,作者对于要显示的字串是逐字符显示的,这样做的目的可能是有时为了以红色显示串的某一部分。如从串资源引用窗口双击某一串时,光标将移到那个串上并以红色显示那个串。在大多数情况下用不着这样。我们只要一口气将串显示出来中文串就能正确显示了,这样显示速度还更快! Break due to BPX #0187:0045E782 (ET=4.41 seconds) :u 45e754 l 40 原代码段: 017F:0045E754 6A01 PUSH 01 ;* Change here 017F:0045E756 8BD6 MOV EDX,ESI ;* and here 017F:0045E758 03D3 ADD EDX,EBX ;* and here 017F:0045E75A 81C2B4126F00 ADD EDX,006F12B4 017F:0045E760 52 PUSH EDX 017F:0045E761 FFB3A0126F00 PUSH DWORD PTR [EBX+006F12A0] 017F:0045E767 8B4DF4 MOV ECX,[EBP-0C] 017F:0045E76A 0FAFCE IMUL ECX,ESI 017F:0045E76D 8B45F8 MOV EAX,[EBP-08] 017F:0045E770 03C8 ADD ECX,EAX 017F:0045E772 51 PUSH ECX 017F:0045E773 FFB35C126F00 PUSH DWORD PTR [EBX+006F125C] 017F:0045E779 E802060500 CALL GDI32!TextOutA 017F:0045E77E 46 INC ESI 017F:0045E77F 8B55FC MOV EDX,[EBP-04] 017F:0045E782 3BF2 CMP ESI,EDX ;* Change here 017F:0045E784 0F823BFFFFFF JB 0045E6C5 017F:0045E78A 8B8BADF60100 MOV ECX,[EBX+0001F6AD] 017F:0045E790 85C9 TEST ECX,ECX 017F:0045E792 747B JZ 0045E80F 改成如下代码段: ================ Sun Mar 25 22:21:53 2001 :u 45e754 l 40 017F:0045E754 FF75FC PUSH DWORD PTR [EBP-04] ;串的长度 017F:0045E757 90 NOP 017F:0045E758 8BD3 MOV EDX,EBX ;EBX串的偏移基址,直接置入edx 017F:0045E75A 81C2B4126F00 ADD EDX,006F12B4 017F:0045E760 52 PUSH EDX ;串的地址 017F:0045E761 FFB3A0126F00 PUSH DWORD PTR [EBX+006F12A0] 017F:0045E767 8B4DF4 MOV ECX,[EBP-0C] 017F:0045E76A 0FAFCE IMUL ECX,ESI 017F:0045E76D 8B45F8 MOV EAX,[EBP-08] 017F:0045E770 03C8 ADD ECX,EAX 017F:0045E772 51 PUSH ECX 017F:0045E773 FFB35C126F00 PUSH DWORD PTR [EBX+006F125C] 017F:0045E779 E802060500 CALL GDI32!TextOutA 017F:0045E77E 46 INC ESI 017F:0045E77F 8B55FC MOV EDX,[EBP-04] 017F:0045E782 3BF6 CMP ESI,ESI ; 不用循环了 017F:0045E784 0F823BFFFFFF JB 0045E6C5 017F:0045E78A 8B8BADF60100 MOV ECX,[EBX+0001F6AD] 017F:0045E790 85C9 TEST ECX,ECX 017F:0045E792 747B JZ 0045E80F 建议保留原来的版本,当需要反汇编中文软件时就用这个改良版。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|