趁着还有点时间,就发一篇帖子,只不过自娱自乐。还是那句老话,看下面
这次的主题是 :VC6 。0————编译出EXE---ollydbg反编译出asm
crakeme :
源代码如下
:得到520,就回复我爱你。#include"stdio.h"
void main(){
int t=1;
printf("input numbeer\n");
while(1){
if(scanf("%d",&t)){
if(t==520)
printf("i love U\n");
else
printf("number err\n");
}
else{
printf("must input numbeer\n");
break;
}
}
}
od:汇编
0040DA09 68 EC2F4200 push 强大的反.00422FEC ; %d
0040DA0E E8 FD36FFFF call 强大的反.00401110
0040DA13 83C4 08 add esp,0x8
0040DA16 85C0 test eax,eax ; 比较EAX
0040DA18 74 27 je short 强大的反.0040DA41 ; 相等就跳 到40DA41
0040DA1A 817D FC 0802000>cmp dword ptr ss:[ebp-0x4],0x208 ; 比较堆栈中的数据和0x208(520)
0040DA21 75 0F jnz short 强大的反.0040DA32 ; 不相等就跳到40DA32,相等就往下走
0040DA23 68 D82F4200 push 强大的反.00422FD8 ; i love U\n
0040DA28 E8 6336FFFF call 强大的反.00401090
0040DA2D 83C4 04 add esp,0x4
0040DA30 EB 0D jmp short 强大的反.0040DA3F
0040DA32 68 1C204200 push 强大的反.0042201C ; number err\n
0040DA37 E8 5436FFFF call 强大的反.00401090
0040DA3C 83C4 04 add esp,0x4
0040DA3F EB 0F jmp short 强大的反.0040DA50
0040DA41 68 FC2F4200 push 强大的反.00422FFC ; must input numbeer\n
0040DA46 E8 4536FFFF call 强大的反.00401090
因为这次把一个vc中的条件判断,反汇编,所以没有注册机。
如果想要程序一直输出 i love u.,修改
0040DA21 /75 0F jnz short 强大的反.0040DA32 ; 不相等就跳到40DA32,相等就往下走
。可以将 jnz,汇编换成JE,就可以了。
这是新手贴:附上注释如下
JNZ:如果不相等就跳转
JE:相等就跳转
crakeme: