能力值:
( LV2,RANK:10 )
|
-
-
2 楼
为什么我的帖子老要我自己顶呢?
唉,高手快来啊~
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
方法太多了,有耐心就在OD里一个个粘
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
汗,就是方法多为什么回的人不多?
而且LS太笼统了,怎么粘?
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
没有上传图片的权限,就口头描述一下,给个最简单的方法吧。
用UltraEdit-32(或者任意一款Hex编辑器)把你的代码生成一个文件,比如 dump.bin。如果是32位的程序,就用OllyDBG就行了,菜单 View->File,然后选刚才的 dump.bin,在新打开的窗口里面点右键选Disassemble就行了,送佛送到西,顺便贴一下内容好了。
00000000 /B8 1220CD10 mov eax, 10CD2012
00000005 BD 187CB918 mov ebp, 18B97C18
0000000A 20B8 0113BB0C and byte ptr [eax+CBB1301], bh
00000010 20BA 1D0ECD10 and byte ptr [edx+10CD0E1D], bh
00000016 - E2 FE loopd short 00000016
00000018 49 dec ecx
00000019 2061 6D and byte ptr [ecx+6D], ah
0000001C 2076 69 and byte ptr [esi+69], dh
0000001F - 72 75 jb short 00000096
00000021 - 73 21 jnb short 00000044
00000023 2046 75 and byte ptr [esi+75], al
00000026 636B 20 arpl word ptr [ebx+20], bp
00000029 - 79 6F jns short 0000009A
0000002B - 75 20 jnz short 0000004D
0000002D 3A ???
0000002E 2D ???
0000002F 29 ???
一看代码这么乱,那就换16位试一下吧。
打开cmd,切换到dump.bin目录下,输入debug dump.bin
提示符下输入 u 和 d 命令,自己看吧,q 是退出。
-u
0B58:0100 B81220 MOV AX,2012
0B58:0103 CD10 INT 10
0B58:0105 BD187C MOV BP,7C18
0B58:0108 B91820 MOV CX,2018
0B58:010B B80113 MOV AX,1301
0B58:010E BB0C20 MOV BX,200C
0B58:0111 BA1D0E MOV DX,0E1D
0B58:0114 CD10 INT 10
0B58:0116 E2FE LOOP 0116
0B58:0118 49 DEC CX
0B58:0119 20616D AND [BX+DI+6D],AH
0B58:011C 207669 AND [BP+69],DH
0B58:011F 7275 JB 0196
-d
0B58:0100 B8 12 20 CD 10 BD 18 7C-B9 18 20 B8 01 13 BB 0C .. ....|.. .....
0B58:0110 20 BA 1D 0E CD 10 E2 FE-49 20 61 6D 20 76 69 72 .......I am vir
0B58:0120 75 73 21 20 46 75 63 6B-20 79 6F 75 20 3A 2D 29 us! Fuck you :-)
0B58:0130 00 75 05 2E FF 06 94 90-2E 80 3C 00 75 19 A9 01 .u........<.u...
0B58:0140 00 75 09 2E C7 06 96 90-02 00 EB 0E 50 B0 03 B4 .u..........P...
0B58:0150 FF E8 9E 00 58 EB 03 E8-1D 01 58 C3 F9 C3 55 51 ....X.....X...UQ
0B58:0160 26 8A 4F 08 32 ED 0B C9-74 0D 8D 6F 09 E8 19 04 &.O.2...t..o....
0B58:0170 73 08 E8 0E 00 E2 F6 F9-EB 06 2E 89 2E A9 90 F8 s...............
-q
看样子,前面是指令,后面是字符串。至于具体这段代码做什么的,我就不清楚了,也没兴趣,你自己分析吧。
PS:谁能推荐个好用的可以外链的图片空间吗?贴图省事多了,不用打这么多垃圾了。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
我按照LS的步骤得到的如下面
C:\>debug 1.bin
-u
0B81:0100 B81200 MOV AX,0012
0B81:0103 CD10 INT 10
0B81:0105 BD187C MOV BP,7C18
0B81:0108 B91800 MOV CX,0018
0B81:010B B80113 MOV AX,1301
0B81:010E BB0C00 MOV BX,000C
0B81:0111 BA1D0E MOV DX,0E1D
0B81:0114 CD10 INT 10
0B81:0116 E2FE LOOP 0116
0B81:0118 49 DEC CX
0B81:0119 20616D AND [BX+DI+6D],AH
0B81:011C 207669 AND [BP+69],DH
0B81:011F 7275 JB 0196
-
不知道怎么回事,好像LS得到的有点问题,比如第一条命令MOV AX,2012,传过去AH=20,但是INT 10有功能号20吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
自己写一段程序,利用Visual Studio的Go To Disassembly 功能可以得到反汇编程序。
程序如下:
#include "stdafx.h"
unsigned char scode[] =
"\xb8\x12\x00\xcd\x10\xbd\x18\x7c\xb9\x18\x00\xb8\x01\x13\xbb\x0c"
"\x00\xba\x1d\x0e\xcd\x10\xe2\xfe\x49\x20\x61\x6d\x20\x76\x69\x72"
"\x75\x73\x21\x20\x46\x75\x63\x6b\x20\x79\x6f\x75\x20\x3a\x2d\x29";
int _tmain(int argc, _TCHAR* argv[])
{
unsigned char* p = scode;
return 0;
}
步骤如下:
1 在语句return 0;下个断点;
2 运行程序,当程序在断点处停下后,获得指针p的值;
3 选择Visual Studio的右键菜单Go To Disassembly ,我们将得到整个程序的汇编命令;
4 在Address输入框中输入指针p的值,我们将跳到scode的汇编代码处。
最后得到的汇编指令如下:
mov eax,10CD0012h
mov ebp,18B97C18h
add byte ptr [eax+0CBB1301h],bh
add byte ptr [edx+10CD0E1Dh],bh
loop 011D7016
dec ecx
and byte ptr [ecx+6Dh],ah
and byte ptr [esi+69h],dh
jb 011D7096
jae 011D7044
and byte ptr [esi+75h],al
arpl word ptr [ebx+20h],bp
jns 011D709A
jne 011D704D
cmp ch,byte ptr ds:[00000029h]
不过这样做要有个前提,数组中的汇编指令集必须和Visual Studio中用的汇编指令集一样才行。
所以你要得到正确的汇编程序,首先你必须知道这个数组中的汇编语言属于那种汇编指令集。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
自己手动输入的,写错了。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
不需要手动输入啊,在CMD下可以复制粘贴的
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
你的那个shellcode我是自己打到 UltrEdit32 里面的。。。抄错了。。。
|
|
|