能力值:
( LV2,RANK:10 )
|
-
-
26 楼
来晚了
我也做了一个
#include <windows.h>
#include <stdio.h>
void main()
{
char* str="hello world\n";
_asm ret
memset(str+1, 00, 3);
MessageBoxA(0,str,0,0);
}
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
太马虎了 精简了一下
#include <windows.h>
#include <stdio.h>
void main()
{
char* str="hello world\n";
memset(str+1, 00, 3);
MessageBoxA(0,str,0,0);
}
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
上面的改动了“hello world”的内容(虽然要求没说不可以 ),再次改进了一下,呵呵,这次没有改动“hello world”的内容,且ida里不显示“hello world”
#include <windows.h>
#include <stdio.h>
void main()
{
char* str="hello world\n";
memset(str+1, 0x65, 3);
memset(str+2, 0x6c, 2);
MessageBoxA(0,str,0,0);
}
|
能力值:
( LV2,RANK:10 )
|
-
-
29 楼
昨天在网吧看到了harass的这个小游戏。回去也写了一段垃圾代码。
水平有限,欢迎鄙视。。
.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
.const
temp dd 1234
szText db 'Hello World!',0
.code
start:
lea ecx,MessageBox
sub esp,10h
mov DWORD ptr [esp],0
mov DWORD ptr [esp+4],offset temp
mov DWORD ptr [esp+8],0
mov DWORD ptr [esp+0Ch],0
add DWORD ptr [esp+4],4
call ecx
invoke ExitProcess,NULL
end start
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
方程 的汇编就是强,写点与众不同
我把Fido(方程)的汇编源码还原成内联汇编形式了
好让大家看,原理和上面出的一样的,不同的编程方式,值得学习
#include<windows.h>
#include<stdio.h>
void main()
{
char* str="hello world\n";
char* temp=str+400; //我把他原来的4*100倍,这样才有效果
_asm{
sub esp,16
//mov DWORD ptr [esp],0
mov eax,temp
mov DWORD ptr [esp+4],eax
//mov DWORD ptr [esp+8],0
//mov DWORD ptr [esp+12],0
sub DWORD ptr [esp+4],400
mov eax,[esp+4]
mov temp,eax
//call ds:MessageBoxA 如果你把这句和上面三个0的注译去掉
//和后面的MessageBoxA注译上,在IDA你会看到不同的方式
}
str=temp;
MessageBoxA(0,str,0,0);
}
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
对于字符串源代码加密实际上有很多种,上面几位都做出了,congratulation!
这题目不难,但每一个人实现的编程方式不一样,值得相互学习.下面我列出了另一种实现方式
参考了黑客技术的几本书 move
#include<windows.h>
#include<stdio.h>
void main()
{
char* str="hello world\n";
char* temp;
DWORD a=0x2828212C;
DWORD b=0x2B33642B;
DWORD c=0x00202836;
_asm{
mov eax, a
mov ecx, b
mov edx, c
mov [ebp-12], eax
loc_401023:
pusha
lea ebx,[ebp-12]
loc_40102B:
xor eax, eax
lea esi, loc_401023
lea ecx, loc_40104A
sub ecx, esi
loc_40103B:
lodsb
add eax, eax
loop loc_40103B
xor [ebx],ah
inc ebx
cmp byte ptr [ebx], 0
jnz loc_40102B
popa
loc_40104A:
lea eax, [ebp-12]
mov temp,eax
}
str=temp;
MessageBoxA(0,str,0,0);
}
bug当然会有的,我可不保证,我的是vc6 release IDA5.2 测式没问题
如果还有更好的字符串加密方式,欢迎跟帖 waiting for you
|