首页
社区
课程
招聘
数据倒序输出,我用汇编实现
2007-5-26 18:51 6752

数据倒序输出,我用汇编实现

2007-5-26 18:51
6752
十六进制的代码

eax是输入,ebx是输出

MOV EAX,124578
XOR EBX,EBX
ROL EAX,4
push offset DONE
push offset LOOP
ret
ret
nop
nop
nop
nop
nop
nop
LOOP:
MOV BL,AL
ROL EAX,4
ROR EBX,4
sub esp,4
dec byte ptr [esp]
ret

DONE:
AND AL,0F
AND BL,0F0
OR BL,AL
ROR EBX,4

字符串的代码:

esi是输入指针,edi是输出指针

mov esi , offset @Input
mov edi , offset @Output
push offset Done
mov ebx , offset @f
push A
ret
@@:
ret
db 256 dup (90h)
mov [edi],al
inc esi
dec edi
A:
mov al,[esi]
push ebx
add [esp],al
ret
Done:
inc edi

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 342
活跃值: (323)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
netsowell 11 2007-5-26 20:09
2
0
void  __declspec(naked) __stdcall mystrrev(const char*  p_str)
{
  __asm
  {
    mov     eax,dword ptr [esp+4]
    pushad
    pushfd
    push  eax
    call  l_kernel
    pop    eax
    popfd
    popad
    retn  4
l_kernel:
    mov     edi, dword ptr [esp+4]
    xor     eax, eax
    mov     ecx, -1
    repne   scas byte ptr es:[edi]
    neg     ecx
    dec     ecx
    dec     ecx
    mov     eax, ecx
    xor     edx, edx
    mov     ebx, 2
    div     ebx
    add     edx, eax
    mov     ebx, edx
    call    l_Loop
    retn
    dec     ebx
l_Loop:
    xor     edx, edx
    mov     eax, 1
    div     ebx
    mov     esi, dword ptr [esp+8]
    mov     al, byte ptr [ecx+esi-1]
    neg     ecx
    mov     ah, byte ptr [ecx+edi-1]
    mov     byte ptr [ecx+edi-1], al
    neg     ecx
    mov     byte ptr [ecx+esi-1], ah
    dec     ecx
    mov     esi, dword ptr [esp]
    add     esi, edx
    push    esi
    retn
  }

}
int _tmain(int argc, _TCHAR* argv[])
{
  char p_sTest[] = "123456789abcdefghijklmnopqrstuvwxyz";
  puts(p_sTest);
  mystrrev(p_sTest);
  puts(p_sTest);
  gets(p_sTest);
  return 0;
}
雪    币: 326
活跃值: (88)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
aa1ss2 2 2007-5-27 07:10
3
0
[QUOTE=netsowell;314637]void  __declspec(naked) __stdcall mystrrev(const char*  p_str)
{
  __asm
  {
    mov     eax,dword ptr [esp+4]
    pushad
    pushfd
    push  ...[/QUOTE]

char p_sTest[] = ""

游客
登录 | 注册 方可回帖
返回