首页
社区
课程
招聘
关于cpuid的问题
发表于: 2006-6-13 11:52 6048

关于cpuid的问题

2006-6-13 11:52
6048
我在反编译时遇到点问题,我知道下面是代码是通过cpuid读取CPU信息分别放在EAX,EBX,ECX,EDX中,最后得出一个"XXXXXXXXXX”字符串,请问一下,在Dephi中如何编程?

00485FA8    55              push ebp
00485FA9    8BEC            mov ebp,esp
00485FAB    53              push ebx
00485FAC    57              push edi
00485FAD    89C7            mov edi,eax
00485FAF    B8 01000000     mov eax,1
00485FB4    0FA2            cpuid
00485FB6    AB              stos dword ptr es:[edi]
00485FB7    89D8            mov eax,ebx
00485FB9    AB              stos dword ptr es:[edi]
00485FBA    89C8            mov eax,ecx
00485FBC    AB              stos dword ptr es:[edi]
00485FBD    89D0            mov eax,edx
00485FBF    AB              stos dword ptr es:[edi]
00485FC0    5F              pop edi
00485FC1    5B              pop ebx
00485FC2    5D              pop ebp
00485FC3    C3              retn

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

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
2
type
   TCPUID=ARRAY[1..4] OF LONGINT
FUNCTION GetCPUID:TCPUID;
    ASSEMBLER;
    REGISTER;
    ASM
        PUSH    EBX
        PUSH    EDI
        MOV     EDI,EAX
        MOV     EAX,1
        DW      $A20F
        STOSD
        MOV     EAX,EBX
        STOSD
        MOV     EAX,ECX
        STOSD
        MOV     EAX,EDX
        STOSD
        POP     EDI
        POP     EBX
END;
2006-6-13 13:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
一、我在一台机子上OD追踪时,得到
686
02
00
387F9FF

最后的字符串是"68670200387F9FF"

二、我在另一台机子上OD追踪时,得到
686
02
00
383F9FF

最后的字符串是"68670200383F9FF"

请问楼上的,我想最后输出字符串,好像字符串有10多位,楼上仁兄怎么只定义TCPUID=ARRAY[1..4] OF LONGINT   ?4位??上面代码看不是很懂,可否解释一下?麻烦了
2006-6-13 13:49
0
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
4
Function GetCPUInfo: string;
var
CPUID: TCPUID;
I: Integer;
begin
for I := Low(CPUID) to High(CPUID) do
     CPUID := -1;
CPUID := GetCPUID;
Result :=  IntToHex(CPUID[1], 8) + IntToHex(CPUID[2], 8)
            + IntToHex(CPUID[3], 8)
            + IntToHex(CPUID[4], 8);
end;

这样的代码到处都是,自己google一下
2006-6-13 13:57
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
楼上仁兄,我google了一下,差不多理解了,可在DEPHI中调试无法运行,本人比较菜,不要见笑,我上传了附件[DEPHI源程序],大家帮看看
2006-6-13 17:23
0
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
6
我记得有一个API可以直接调用!
2006-6-14 06:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最初由 happytown 发布
我记得有一个API可以直接调用!


呵,版主大人的回话了,谢谢您,我上传我的源程序,我不知道为何错在最后的end.那里了??
2006-6-14 08:12
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
写了个测试一下可以用的。type好像要放在{$R *.dfm}前面,要不然你定义的function就要在前面申明。下面是我改后的,你试试吧。

unit U_Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

type
   TCPUID=ARRAY[1..4] OF LONGINT;
FUNCTION GetCPUID:TCPUID;
    ASSEMBLER;
    REGISTER;
    ASM
        PUSH    EBX
        PUSH    EDI
        MOV     EDI,EAX
        MOV     EAX,1
        DW      $A20F
        STOSD
        MOV     EAX,EBX
        STOSD
        MOV     EAX,ECX
        STOSD
        MOV     EAX,EDX
        STOSD
        POP     EDI
        POP     EBX
END;

Function GetCPUInfo: string;
var
  CPUID: TCPUID;
  I: Integer;
begin
  for I := Low(CPUID) to High(CPUID) do
       CPUID[i] := -1;
  CPUID := GetCPUID;
  Result :=  IntToHex(CPUID[1], 8) + IntToHex(CPUID[2], 8)
              + IntToHex(CPUID[3], 8)
              + IntToHex(CPUID[4], 8);
end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := GetCPUInfo;
end;

end.
2006-6-14 09:19
0
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
9
LZ就是以前的“我要破解”,换个ID以为我就不认识你了?

Unit Main;

Interface

Uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Buttons, ComObj, Variants;

Type
  TCPUID = Array[1..4] Of Longint;

Type
  TForm1 = Class(TForm)
    pnl1: TPanel;
    grp1: TGroupBox;
    lbl1: TLabel;
    edtMacCode: TEdit;
    btn1: TSpeedButton;
    btn2: TSpeedButton;
    Procedure btn2Click(Sender: TObject);
    Procedure btn1Click(Sender: TObject);

  private
    { Private declarations }

  public
    { Public declarations }
  End;

Var
  Form1: TForm1;

Implementation

{$R *.DFM}

Function GetCPUID: TCPUID; assembler; register;
Asm
PUSH    EBX
PUSH    EDI
MOV     EDI,EAX
MOV     EAX,1
DW      $A20F
STOSD
MOV     EAX,EBX
STOSD
MOV     EAX,ECX
STOSD
MOV     EAX,EDX
STOSD
POP     EDI
POP     EBX
End;

Procedure TForm1.btn2Click(Sender: TObject);
Begin
  Close;
End;

Procedure TForm1.btn1Click(Sender: TObject);
Var
  CPUID: TCPUID;
  I: Integer;

Begin
  For I := Low(CPUID) To High(CPUID) Do
    CPUID[I] := -1;

  CPUID := GetCPUID;
  edtMacCode.Text := IntToHex(CPUID[1], 8) + IntToHex(CPUID[2], 8)
    + IntToHex(CPUID[3], 8)
    + IntToHex(CPUID[4], 8);
End;
End.
2006-6-14 09:20
0
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
10
今天特地看了一下你新马甲发的贴,得出一个结论--->“虚伪”,你自己回头看看自己的帖子吧。
2006-6-14 09:31
0
雪    币: 253
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
11
那个“我要破解” 他的帖子全部被重新编辑过了
2006-6-14 10:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
首先特别感谢Baby2008兄的大人大量,不计小人之过

再者,我承认我是“我要破解”,由于作业是求助得来的,是自己的“做贼心虚”,重新编辑了贴子,后来我也不敢相信我竞然去做了,当时没有考虑到回贴人的感受,感到惭愧无比,我知道错了,我必须去承认,真诚向我热心回贴的表示歉意及感谢!!!希望版主能给我改过的机会,不要封我的ID,我保证以后不会再出现这样的事了

再次深深地向各位回贴人道歉
2006-6-14 11:44
0
雪    币: 222
活跃值: (26)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
13
最初由 baby2008 发布
LZ就是以前的“我要破解”,换个ID以为我就不认识你了?

Unit Main;

Interface
........


baby2008真是牛人呀。人家换件马甲还能被你发现,天生的破解高手呀。。。
呵呵
2006-6-14 11:53
0
雪    币: 2506
活跃值: (1000)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
14
以前就曾感到“我要破解”“追踪调试”这两个ID怎么这么怪,当时也没多想,幸亏xb提醒才发现原来是马甲。看了楼主的发帖内容,基本都是拿别人当代码转换工具来使。至于你使用马甲,你应该知道论坛规则是如何处理的。
2006-6-14 12:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
最初由 CCDebuger 发布
以前就曾感到“我要破解”“追踪调试”这两个ID怎么这么怪,当时也没多想,幸亏xb提醒才发现原来是马甲。看了楼主的发帖内容,基本都是拿别人当代码转换工具来使。至于你使用马甲,你应该知道论坛规则是如何处理的。


希望从轻发落,我本人也是很努力的了,由最初的OD使用入门------→到VB编程------→dephi编程,只是陷于死胡同里出不来,需要提示与指点,经高手们一指点,恍然大悟
由于自己特别想学点东西,苦于起点低,我呢,一陷入死胡同就出不来,这毛病得改。
论坛就是来交流的,我不是求破解,我拿一些例子来研究以便更好的入门。一切源于求学渴望,希望从轻发落
2006-6-14 12:54
0
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
16
大家都不会计较这点小事,LZ放心好了.
2006-6-14 12:58
0
游客
登录 | 注册 方可回帖
返回
//