随便用OD或进制工具到下面地址修改代码,主要是为了显示格式的需要,我们把原来的格式反转过来为 ID + 路径方式代码:地址:00462598原始:25 73 20 28 25 30 38 58 29修改:28 25 30 38 58 29 20 25 73第二步
关键位置在第一处,第二处不改正常情况没发现什么问题,不过感觉第二处有可能会有经过的时候,所以一起改掉,如果日后发现有问题请自己改回,这里的修改主要是为配合第一处修改后的参数传递顺序,也改为 ID + 路径的方式
第一处:原始代码:0041C034 51 PUSH ECX0041C035 52 PUSH EDX十六进制代码:51 52修改代码:0041C034 52 PUSH EDX0041C035 51 PUSH ECX十六进制代码:52 51第二处:原始代码:0041C13D . 51 PUSH ECX0041C13E . 52 PUSH EDX十六进制代码:51 52修改代码:0041C13D 52 PUSH EDX0041C13E 51 PUSH ECX十六进制代码:52 51第三步
上面改好后现在就已经可以正常显示了,但当打开进程的时候就会出错,简单分析了一下代码,程序是通过把得到的 PID + 路径按原来的路径加 PID 的方式去处理的,就导致无法打开进程,这里用了个取巧的方法,在不影响正常显示的情况下我们把我们得到的 PID + 路径字符串在程序处理打开进程之前还原回 路径 + PID 的方式然后在让程序去继续处理。
代码如下,下面代码的主要作用其实就是相当于把字符串按需要的格式翻转,有需要的朋友简单跟一下就明白了,就不注释了,很简单的东西。顺便说一下,这段代码我放到了.DATA 段,好处是这个段的属性是可读,可写,可执行,所以后面的数据处理也在这个段里处理的,不过原程序中没用空间,所以我把这个段的 RSIZE 调整到了0x2000 如果大家修改自己的版本,可以自己处理这个问题。
下面代码可以利用 OD 的 NonaWrite 1.2 插件直接程序。代码:0041C59C - E9 5FFC0500 JMP 0047C200
0x0047c200:LEA EDI,DWORD PTR SS:[ESP+26C]pushadpushfdMOV EDX,EDIpush 0CALL DWORD PTR DS:[44D234]ADD EAX,7CE00MOV ESI,EDIMOV EDI,EAX
xor ebx,ebxmov bl,clsub bl,0bADD ESI,0BMOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]DEC BLTEST BL,BLJNZ SHORT 0047C227MOV BYTE PTR DS:[EDI],20
INC EDIMOV BL,0AMOV ESI,EDXMOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]DEC BLTEST BL,BLJNZ 0047C23b
MOV BL,CLMOV ESI,EAXMOV EDI,EDXMOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]DEC BLTEST BL,BLJNZ 0047C24C
POPFDPOPADJMP 0041C5A3
高高竞彩