首页
社区
课程
招聘
[求助]Please C++ to Delphi Translate
发表于: 2009-5-10 20:47 5148

[求助]Please C++ to Delphi Translate

2009-5-10 20:47
5148
void generate(BYTE* bufer, int size)
{
	memset(bufer, 0, size);
	int i = 0;
	while (i < size)
	{
		BYTE rnd = rand() % size;
		if (!bufer[rnd]) 
		{
			bufer[rnd] = i;
			i++;
		}
	}
}

void Perm256(BYTE* bufer)
{
	BYTE tmp[256];
	for (int i = 0; i < 256; i++)
	{
		tmp[bufer[i]] = i; 
	}
	memmove(bufer, tmp, 256);
}

void Perm16(BYTE* bufer)
{
	BYTE tmp[16];
	for (int i = 0; i < 16; i++)
	{
		tmp[bufer[i]] = i; 
	}
	memmove(bufer, tmp, 16);
}

void Jcc(WORD* bufer, int elemCount, BYTE* permutation)
{
	WORD temp[16];
	for (int i = 0; i < elemCount; i++)
	{
		temp[i] = bufer[permutation[i]];
		if (i > permutation[i])
		{
			WORD tmp = i - permutation[i];
			tmp <<= 9;
			temp[i] -= tmp;
		}
		else
		{
			WORD tmp = permutation[i] - i;
			tmp <<= 9;
			temp[i] += tmp;
		}
	}
	memmove(bufer, temp, 2*16);
}

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
貌似不是很难  可惜现在没时间呢
2009-5-11 07:37
0
雪    币: 204
活跃值: (76)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
void generate(BYTE* bufer, int size)
{
memset(bufer, 0, size);
int i = 0;
while (i < size)
{
BYTE rnd = rand() % size;
if (!bufer[rnd]) 
{
bufer[rnd] = i;
i++;
}
}
}


Delphi
procedure generate(bufer: Pchar;  size:integer);
var
  i :integer;
  rnd:Byte;
begin
Fillchar(bufer^, size,0 );
i := 0;
  while  i < size do
  begin
  Randomize;
  rnd := random(size) ;
  if  bufer[rnd] <> #0 then
  begin
    bufer[rnd] := Char(i);
    inc(i);
  end;
  end;
end;
2009-5-11 12:05
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
4
procedure genereate(Bufer:pByte; nSize:Integer);
var i:Integer;
    rnd:Byte;
begin
  ZeroMemory(Bufer,nSize);
  i := 0;
  while i < nSize do
  begin
    rnd := Random(nSize);
    if pByte(Integer(Bufer)+rnd)^ = 0 then
    begin
      pByte(Integer(Bufer)+rnd)^ := i;
      inc(i);
    end;
  end;
end;

procedure Perm256(Bufer:pByte);
var tmp:Array[0..255] of Byte;
    i:Integer;
begin
  for i := 0 to 255 do
  begin
    tmp[pByte(Integer(Bufer)+i)^] := i;
  end;
  move(tmp, Bufer^, 256);
end;

procedure Perm16(Bufer:pByte);
var tmp:Array[0..15] of Byte;
    i:Integer;
begin
  for i := 0 to 15 do
  begin
    tmp[pByte(Integer(Bufer)+i)^] := i;
  end;
  move(tmp,Bufer^,16);
end;

procedure Jcc(Bufer:pWord; elemCount:Integer; permutation:pByte);
var temp:Array[0..15] of WORD;
    i:Integer;
    tmp:WORD;
begin
  for i := 0 to elemCount - 1 do
  begin
    if i > PByte(Integer(permutation) + i)^ then
    begin
      tmp := i - pByte(Integer(permutation) + i)^;
      tmp := tmp shl 9;
      temp[i] := temp[i] - tmp;
    end else
    begin
      tmp := pByte(Integer(permutation) + i)^ - i;
      tmp := tmp shl 9;
      temp[i] := temp[i] + tmp;
    end;
  end;
  move(temp, Bufer^, 2*16);
end;
2009-5-11 12:48
0
雪    币: 15
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Thank You Very Much For Trnslate My Code
2009-5-11 13:33
0
雪    币: 15
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
Please help me translate C++ macro to delphi macro
2009-5-12 00:45
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
7
Delphi不支持这样的宏。像这样的宏,完整的宏过程和宏函数还可以转换成Delphi的独立的过程和函数,而一些一句一句的宏无法转换成独立可以使用的语句块,只能要调用这些语句块时才能进行转换使用。
2009-5-12 10:03
0
雪    币: 1283
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
嗯,就是上面的翻译
貌似是一个密码框随机产生字符发送出去的代码呵
2009-5-12 13:13
0
雪    币: 1283
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
Delphi中不支持宏
只能用常量代替

*(BYTE*)(funcAddr) = 0xE9;
const
  funcAddrOffset = $E9
2009-5-12 13:14
0
雪    币: 15
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
Anti Debug Source Please Translate to Delphi Thanks all

#include <windows.h>

#define size3 3
#define size5 5
bool _IsDebuggerPresent()
{
HANDLE h1,h2;
HANDLE hp;
char *p;
char i,j;
hp = HeapCreate(0,0x1000,0x10000);
h1 = HeapAlloc(hp,HEAP_ZERO_MEMORY,size3);
p=(char *)h1;
j=0;
for(i=0;i<=15;i++,p++)
{
if (LOBYTE(*p)==0xAB)
j++;
}
if(j>=8)
return true;
h2 = HeapAlloc(hp,HEAP_ZERO_MEMORY,size5);
if((int(h2)-int(h1))>16)
return true;
HeapFree(hp,0,h1);
HeapFree(hp,0,h2);
return false;
}
int main()
{
if( _IsDebuggerPresent())
MessageBoxA(NULL,"Detect Olly","TEST",MB_OK);
else
MessageBoxA(NULL,"PASS","TEST",MB_OK);
return 0;
}
2009-5-14 06:09
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
很好  学习下
2009-5-14 07:50
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
小虾抄的很细致!
2009-5-14 08:23
0
游客
登录 | 注册 方可回帖
返回
//