peid逆向记录

Delphi工具—反编译Delphi(二) 第二节 Delphi反向工程      目前 ,Borland没有提供任何产品用于反编译可执行(.exe)文件或“Delphi 编译文件”(.dcu)为原始的程序代码(.pas)。      Delphi编译单元:DCU(Delphi compiled unit: DCU)      当一个Delphi工程被编译或运行时,一个编译单元(.dcu)文件便产生了。默认情况下,每个单元的编译 阅读详情
【文章标题】: peid逆向记录
【文章作者】: layper
【作者邮箱】: layper2002@yahoo.com.cn
【作者主页】: www.sy135.com
【下载地址】: 自己搜索下载
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  用PEID加载入EXE文件,过程如下:
 
  打开文件:
  00439DFE   FF15 88D34700   call dword ptr ds:[<&comdlg32.GetOpenFileNameA>]   ;

comdlg32.GetOpenFileNameA
 
  0012F458   0012F460   /pOpenFileName = 0012F460
 
  创建线程:
  00448F5C   FF15 F0D04700   call dword ptr ds:[<&kernel32.CreateThrea>;

kernel32.CreateThread
 
  0012F4A0   00000000   |pSecurity = NULL
  0012F4A4   00000000   |StackSize = 0
  0012F4A8   00444EB0   |ThreadFunction = PEiD.00444EB0
  0012F4AC   00468ACC   |pThreadParm = PEiD.00468ACC
  0012F4B0   00000000   |CreationFlags = 0
  0012F4B4   00468A0C   /pThreadId = PEiD.00468A0C
 
  拖放文件作初始化:
  0043B720   FF15 20D24700   call dword ptr ds:[<&shell32.DragAcceptFi>;

shell32.DragAcceptFiles
 
  0012F498   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F49C   00000000   /Accept = FALSE
 
  设置控件文本:
  0043B776   FF15 64D34700   call dword ptr ds:[<&user32.SetWindowText>;

USER32.SetWindowTextA
 
  0012F498   00050452   |hWnd = 00050452 ('退出(&X)',class='Button',parent=003503AE)
  0012F49C   004077C8   /Text = "中止"
 
  设置对话框项目的文本:
  00449210   FF15 50D34700   call dword ptr ds:[<&user32.SetDlgItemTex>;

USER32.SetDlgItemTextA
 
  0012F604   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F608   000003E8   |ControlID = 3E8 (1000.)
  0012F60C   00468B00   /Text = "D:/我的程序/Project1.exe"
 
  打开文件:
  004384BD   FF15 FCD14700   call dword ptr ds:[<&kernel32.CreateFileA>; kernel32.CreateFileA
 
  0140FF38   00468B00   |FileName = "D:/我的程序/Project1.exe"
  0140FF3C   80000000   |Access = GENERIC_READ
  0140FF40   00000001   |ShareMode = FILE_SHARE_READ
  0140FF44   00000000   |pSecurity = NULL
  0140FF48   00000003   |Mode = OPEN_EXISTING
  0140FF4C   00000080   |Attributes = NORMAL
  0140FF50   00000000   /hTemplateFile = NULL
 
  得到文件大小:
  004384CE   FF15 ECD14700   call dword ptr ds:[<&kernel32.GetFileSize>; kernel32.GetFileSize
 
  0140FF4C   000001EC   |hFile = 000001EC (window)
  0140FF50   00000000   /pFileSizeHigh = NULL
 
  创建一个新的文件映射对象:
  004384E4   FF15 F0D14700   call dword ptr ds:[<&kernel32.CreateFileM>;

kernel32.CreateFileMappingA
 
  0140FF3C   000001EC   |hFile = 000001EC (window)
  0140FF40   00000000   |pSecurity = NULL
  0140FF44   00000002   |Protection = PAGE_READONLY
  0140FF48   00000000   |MaximumSizeHigh = 0
  0140FF4C   00000000   |MaximumSizeLow = 0
  0140FF50   00000000   /MapName = NULL
 
  映射到当前应用程序的地址空间:
  004384F9   FF15 F4D14700   call dword ptr ds:[<&kernel32.MapViewOfFi>;

kernel32.MapViewOfFile
 
  0140FF40   00000110   |hMapObject = 00000110 (window)
  0140FF44   00000004   |AccessMode = FILE_MAP_READ
  0140FF48   00000000   |OffsetHigh = 0
  0140FF4C   00000000   |OffsetLow = 0
  0140FF50   00000000   /MapSize = 0
 
  设置文本:
  00449210   FF15 50D34700   call dword ptr ds:[<&user32.SetDlgItemTex>;

USER32.SetDlgItemTextA
 
  0012F604   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F608   00000404   |ControlID = 404 (1028.)
  0012F60C   00407323   /Text = ""
 
  0012F604   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F608   00000405   |ControlID = 405 (1029.)
  0012F60C   00407323   /Text = ""
 
  0012F604   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F608   00000408   |ControlID = 408 (1032.)
  0012F60C   00407323   /Text = ""
 
  0012F604   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F608   00000409   |ControlID = 409 (1033.)
  0012F60C   00407323   /Text = ""
 
  0012F604   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F608   00000406   |ControlID = 406 (1030.)
  0012F60C   00407323   /Text = ""
 
  0012F604   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F608   00000407   |ControlID = 407 (1031.)
  0012F60C   00407323   /Text = ""
 
  0012F604   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F608   00000404   |ControlID = 404 (1028.)
  0012F60C   0140FF20   /Text = "00063014"
 
  0012F604   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F608   00000405   |ControlID = 405 (1029.)
  0012F60C   0140FF20   /Text = "00062414"
 
  0012F604   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F608   00000408   |ControlID = 408 (1032.)
  0012F60C   0140FF20   /Text = "2.25"
 
  0012F604   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F608   00000406   |ControlID = 406 (1030.)
  0012F60C   0140FF08   /Text = "CODE"
 
  0012F604   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F608   00000407   |ControlID = 407 (1031.)
  0012F60C   0140FF20   /Text = "55,8B,EC,83"
 
  0012F604   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F608   00000409   |ControlID = 409 (1033.)
  0012F60C   0140FF20   /Text = "Win32 GUI"
 
  0012F604   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F608   000003E9   |ControlID = 3E9 (1001.)
  0012F60C   004078D8   /Text = "正在扫描..."
 
  进行实际的内存分配工作:
  0045AD22   FF15 84D14700   call dword ptr ds:[<&kernel32.HeapAlloc>] ;

ntdll.RtlAllocateHeap
 
  0140F8E8   003E0000   |hHeap = 003E0000
  0140F8EC   00000000   |Flags = 0
  0140F8F0   00000020   /HeapSize = 20 (32.)
 
  0043B720   FF15 20D24700   call dword ptr ds:[<&shell32.DragAcceptFi>;

shell32.DragAcceptFiles
 
  0012F5F0   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F5F4   00000001   /Accept = TRUE
 
  设置窗口文本:
  0043B776   FF15 64D34700   call dword ptr ds:[<&user32.SetWindowText>;

USER32.SetWindowTextA
 
  0012F5F0   00050452   |hWnd = 00050452 ('中止',class='Button',parent=003503AE)
  0012F5F4   004077D0   /Text = "退出"
 
  设置文本:
  00449237   FF15 50D34700   call dword ptr ds:[<&user32.SetDlgItemTex>;

USER32.SetDlgItemTextA
 
  0012F604   003503AE   |hWnd = 003503AE ('PEiD v0.94',class='#32770')
  0012F608   000003E9   |ControlID = 3E9 (1001.)
  0012F60C   00AA1BA8   /Text = "Borland Delphi 6.0 - 7.0"
 
  解除对一个文件映射对象的映射:
  0043843C   FF15 F8D14700   call dword ptr ds:[<&kernel32.UnmapViewOf>;

kernel32.UnmapViewOfFile
 
  0140FF5C   01110000   /BaseAddress = 01110000
 
  到这里之后,PEID界面变成:
 
  文件:D:/我的程序/Project1.exe
  入口点:00063014   EP段:CODE
  文件偏移:00062414     首字节:55,8B,EC,83
  连接器版本:2.25       子系统:Win32 GUI
  查壳:Borland Delphi 6.0 - 7.0
 
  用OD看清楚它的流程,IDA看他的数据点判断的关键点
.text:004341D0 sub_4341D0     proc near           ; CODE XREF: sub_44A740+15B p
.text:004341D0                           ; sub_44A740+1A3 p ...
.text:004341D0
.text:004341D0 arg_0       = dword ptr 8
.text:004341D0 arg_4       = dword ptr 0Ch
.text:004341D0 arg_8       = dword ptr 10h
.text:004341D0
.text:004341D0           push   ebx
.text:004341D1           mov   ebx, [esp+arg_0]
.text:004341D5           push   esi
.text:004341D6           mov   esi, [esp+4+arg_8]
.text:004341DA           push   edi
.text:004341DB           mov   edi, [esp+8+arg_4]
.text:004341DF           push   esi
.text:004341E0           push   edi
.text:004341E1           push   ebx
.text:004341E2           call   sub_433930   ;跟进

;---------------------------------------------------------------------------
sub_433930:
.text:00433930 sub_433930     proc near           ; CODE XREF: sub_4341D0+12 p
.text:00433930                           ; .text:00434232 p ...
.text:00433930
.text:00433930 arg_0       = dword ptr 8
.text:00433930 arg_4       = dword ptr 0Ch
.text:00433930
.text:00433930           push   ebp
.text:00433931           mov   ebp, [esp+arg_0] ;堆栈 ss:[0140FEEC]=00468CE0
.text:00433935           mov   eax, [ebp+20h] ;ss:[00468D00]=00000220,eax=000000B5
.text:00433938           test   eax, eax
.text:0043393A           jnz   short loc_433940 ;跳走
.text:0043393C           xor   al, al
.text:0043393E           pop   ebp
.text:0043393F           retn
.text:00433940 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
.text:00433940
.text:00433940 loc_433940:                   ; CODE XREF: sub_433930+A j到这里
.text:00433940           mov   edx, [esp+arg_4] ;edx=ss:[0140FEF0]=0140FF90
.text:00433944           mov   eax, [edx+0Ch]   ;堆栈 ds:[0140FF9C]=00F200B0, (ASCII

"PE"),eax=00000220文件头PE出来了
.text:00433947           movzx   eax, word ptr [eax+6] ;得到文件节数目,ds:[00F200B6]=0003
.text:0043394B           lea   ecx, [eax+eax*4] ;ecx=文件节的数目*5=F
.text:0043394E           mov   eax, [edx+18h]     ;堆栈 ds:[0140FFA8]=00F201A8, (ASCII

".def")
.text:00433951           lea   ecx, [eax+ecx*8-28h] ;ecx=00F201F8 ASCII ".def"
.text:00433955           mov   eax, [ecx+10h]   ;ds:[00F20208]=00000200,eax=00F201A8,

(ASCII ".def")
.text:00433958           push   esi           ;esi=000000B5
.text:00433959           cmp   eax, [ecx+8]     ;注意比较ds:[00F20200]

=00000208,eax=00000200
.text:0043395C           jnz   short loc_4339D5 ;跳走
.text:0043395E           mov   esi, [ecx+14h]
.text:00433961           shr   eax, 1
.text:00433963           add   eax, esi
.text:00433965           mov   esi, [edx+4]
.text:00433968           lea   ecx, [eax+12h]
.text:0043396B           cmp   ecx, esi
.text:0043396D           ja     short loc_4339D5
.text:0043396F           lea   esi, [eax+20h]
.text:00433972           cmp   eax, esi
.text:00433974           jnb   short loc_433999
.text:00433976           mov   ecx, [edx]
.text:00433978
.text:00433978 loc_433978:                   ; CODE XREF: sub_433930+67 j
.text:00433978           cmp   word ptr [ecx+eax], 6890h
.text:0043397E           jnz   short loc_433994
.text:00433980           cmp   dword ptr [ecx+eax+6], 36FF6467h
.text:00433988           jnz   short loc_433994
.text:0043398A           cmp   dword ptr [ecx+eax+0Ch], 26896467h
.text:00433992           jz     short loc_4339BF
.text:00433994
.text:00433994 loc_433994:                   ; CODE XREF: sub_433930+4E j
.text:00433994                           ; sub_433930+58 j
.text:00433994           inc   eax
.text:00433995           cmp   eax, esi
.text:00433997           jb     short loc_433978
.text:00433999
.text:00433999 loc_433999:                   ; CODE XREF: sub_433930+44 j
.text:00433999           mov   edx, [edx]
.text:0043399B           mov   eax, [ebp+20h]
.text:0043399E           cmp   word ptr [edx+eax-2], 0E0FFh
.text:004339A5           jnz   short loc_4339D5
.text:004339A7           push   1Fh
.text:004339A9           push   offset aEpprot0_3Feuer ; "EPProt 0.3 -> FEUERRADER/AHTeam"
.text:004339AE           lea   ecx, [ebp+4]
.text:004339B1           call   sub_430CD0
.text:004339B6           pop   esi
.text:004339B7           mov   byte ptr [ebp+0], 1
.text:004339BB           mov   al, 1
.text:004339BD           pop   ebp
.text:004339BE           retn
.text:004339BF ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
.text:004339BF
.text:004339BF loc_4339BF:                   ; CODE XREF: sub_433930+62 j
.text:004339BF           push   offset aDotfixFakesign ; "DotFix FakeSigner 2.2 -> GPcH

Soft"
.text:004339C4           lea   ecx, [ebp+4]
.text:004339C7           call   sub_431FA0
.text:004339CC           pop   esi
.text:004339CD           mov   byte ptr [ebp+0], 1
.text:004339D1           mov   al, 1
.text:004339D3           pop   ebp
.text:004339D4           retn
.text:004339D5 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
.text:004339D5
.text:004339D5 loc_4339D5:                   ; CODE XREF: sub_433930+2C j跳到这里
.text:004339D5                           ; sub_433930+3D j ...
.text:004339D5           pop   esi
.text:004339D6           xor   al, al
.text:004339D8           pop   ebp
.text:004339D9           retn
.text:004339D9 sub_433930     endp
;------------------------------------------------------------------------------
.text:004341E7           add   esp, 0Ch
.text:004341EA           test   al, al
.text:004341EC           jnz   short loc_4341FD ;不跳
.text:004341EE           push   esi
.text:004341EF           push   edi
.text:004341F0           push   ebx     ;ebx=00468CE0 (PEiD.00468CE0)
.text:004341F1           call   sub_4339E0     ;跟进
;--------------------------------4439e0--------------------------------------------------
.text:004339E0 sub_4339E0     proc near           ; CODE XREF: sub_4341D0+21 p
.text:004339E0                           ; .text:00434241 p ...
.text:004339E0
.text:004339E0 var_28       = dword ptr -28h
.text:004339E0 var_C       = dword ptr -0Ch
.text:004339E0 var_4       = dword ptr -4
.text:004339E0 arg_0       = dword ptr 4
.text:004339E0 arg_4       = dword ptr 8
.text:004339E0 arg_8       = dword ptr 0Ch
.text:004339E0
.text:004339E0           mov   eax, large fs:0
.text:004339E6           mov   edx, [esp+arg_4]
.text:004339EA           push   0FFFFFFFFh
.text:004339EC           push   offset loc_464308
.text:004339F1           push   eax
.text:004339F2           mov   large fs:0, esp
.text:004339F9           mov   eax, [edx+0Ch] ;堆栈 ds:[0140FF9C]=00F200B0, (ASCII "PE")
.text:004339FC           movzx   eax, word ptr [eax+6] ;ds:[00F200B6]=0003,eax=00F200B0,

(ASCII "PE")
.text:00433A00           mov   ecx, [edx+18h] ;堆栈 ds:[0140FFA8]=00F201A8, (ASCII

".def")
ecx=00F201F8, (ASCII ".def")
.text:00433A03           sub   eax, 2 ;eax=1
.text:00433A06           sub   esp, 1Ch ;esp=0140FEDC-1c=0140FEC0
.text:00433A09           lea   eax, [eax+eax*4] ;eax=5
.text:00433A0C           lea   eax, [ecx+eax*8] ;地址=00F201D0, (ASCII ".def")

eax=00000005
.text:00433A0F           mov   ecx, [eax+10h] ;ds:[00F201E0]=00000200,ecx=00F201A8,

(ASCII ".def")
.text:00433A12           push   esi
.text:00433A13           cmp   ecx, [eax+8] ;ds:[00F201D8]=0000019E
ecx=00000200
.text:00433A16           jnz   short loc_433A4E ;跳走
.text:00433A18           cmp   ecx, 5000h
.text:00433A1E           jnz   short loc_433A4E
.text:00433A20           mov   ecx, [eax+38h]
.text:00433A23           add   eax, 28h
.text:00433A26           test   ecx, ecx
.text:00433A28           jnz   short loc_433A4E
.text:00433A2A           cmp   dword ptr [eax+8], 1000h
.text:00433A31           jnz   short loc_433A4E
.text:00433A33           mov   ecx, [edx+4]
.text:00433A36           sub   eax, 28h
.text:00433A39           mov   eax, [eax+14h]
.text:00433A3C           dec   ecx
.text:00433A3D           cmp   ecx, eax
.text:00433A3F           jbe   short loc_433A4E
.text:00433A41           mov   edx, [edx]
.text:00433A43
.text:00433A43 loc_433A43:                   ; CODE XREF: sub_4339E0+6C j
.text:00433A43           cmp   byte ptr [edx+ecx], 0
.text:00433A47           jnz   short loc_433A60
.text:00433A49           dec   ecx
.text:00433A4A           cmp   ecx, eax
.text:00433A4C           ja     short loc_433A43
.text:00433A4E
.text:00433A4E loc_433A4E:                   ; CODE XREF: sub_4339E0+36 j跳到这里
.text:00433A4E                           ; sub_4339E0+3E j ...
.text:00433A4E           pop   esi
.text:00433A4F           xor   al, al
.text:00433A51           mov   ecx, [esp+28h+var_C]
.text:00433A55           mov   large fs:0, ecx
.text:00433A5C           add   esp, 28h
.text:00433A5F           retn             ;返回004341F6
.text:00433A60 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
.text:00433A60
.text:00433A60 loc_433A60:                   ; CODE XREF: sub_4339E0+67 j
.text:00433A60           cmp   byte ptr [edx+ecx], 0C3h
.text:00433A64           jnz   short loc_433A4E
.text:00433A66           push   offset aMslrh0_32aEmad ; "[MSLRH] 0.32a -> emadicius [ "
.text:00433A6B           lea   ecx, [esp+30h+var_28]
.text:00433A6F           call   sub_430DC0
.text:00433A74           mov   eax, [esp+2Ch+arg_8]
.text:00433A78           lea   edx, [eax+eax*2]
.text:00433A7B           mov   eax, ds:dword_4037E0[edx*4]
.text:00433A82           push   eax
.text:00433A83           lea   ecx, [esp+30h+var_28]
.text:00433A87           mov   [esp+30h+var_4], 0
.text:00433A8F           call   sub_431FD0
.text:00433A94           push   2
.text:00433A96           push   offset asc_406CD0 ; " ]"
.text:00433A9B           lea   ecx, [esp+34h+var_28]
.text:00433A9F           call   sub_431E90
.text:00433AA4           mov   esi, [esp+2Ch+arg_0]
.text:00433AA8           push   0FFFFFFFFh
.text:00433AAA           push   0
.text:00433AAC           lea   ecx, [esp+34h+var_28]
.text:00433AB0           push   ecx
.text:00433AB1           lea   ecx, [esi+4]
.text:00433AB4           call   sub_430BE0
.text:00433AB9           lea   ecx, [esp+2Ch+var_28]
.text:00433ABD           mov   byte ptr [esi], 1
.text:00433AC0           call   sub_43C7B0
.text:00433AC5           mov   ecx, [esp+2Ch+var_C]
.text:00433AC9           pop   esi
.text:00433ACA           mov   al, 1
.text:00433ACC           mov   large fs:0, ecx
.text:00433AD3           add   esp, 28h
.text:00433AD6           retn
.text:00433AD6 sub_4339E0     endp
;----------------------------------------------------------------------------------------------
.text:004341F6           add   esp, 0Ch   ;返回这里
.text:004341F9           test   al, al
.text:004341FB           jz     short loc_434203 ;跳走
.text:004341FD
.text:004341FD loc_4341FD:                   ; CODE XREF: sub_4341D0+1C j
.text:004341FD           pop   edi
.text:004341FE           pop   esi
.text:004341FF           mov   al, 1
.text:00434201           pop   ebx
.text:00434202           retn
.text:00434203 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
.text:00434203
.text:00434203 loc_434203:                   ; CODE XREF: sub_4341D0+2B j 跳到这里
.text:00434203           push   esi
.text:00434204           push   edi
.text:00434205           push   ebx
.text:00434206           call   sub_433AE0
.text:0043420B           add   esp, 0Ch
.text:0043420E           pop   edi
.text:0043420F           test   al, al
.text:00434211           pop   esi
.text:00434212           setnz   al       ;条件为假
.text:00434215           pop   ebx
.text:00434216           retn
.text:00434216 sub_4341D0     endp
有点乱,先分析到这里,分析特征码的思路还没有完全明了,原本想利用它的函数调用顺序来分析出特征码的调

用处,但不成功,观察一下,PEID有可能利用异常来转入特征码比较处.所以我就搜索文本发现很多诸如ASCII

"Armadillo 1.75a -> Silicon Realms Toolworks"壳的名称,我就利用回溯法往回找,大致了解他用
cmp eax,[特征码片段]     来搜索出壳的名称.
不知对不对,敬请指点.
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                    2006年06月06日 12:33:32
+++++++++++++++++++++++++++++++++++++++++++++++++++
NBW:好快的刀,你继续分析。大家支持你!

贴一点我前几天看的:

     //获得入口处的特征
     00E1FEE8   00E1FF20 ASCII "60,BE,00,10"
     0042D8A0   8D5424 30       lea edx,dword ptr ss:[esp+30]
     0042D8A4   68 A42F4000     push PEiD.00402FA4               ; ASCII "%02X,%02X,%02X,%02X"
     0042D8A9   52           push edx
     0042D8AA   FFD3         call ebx

     //获得子系统
     0042D925   33C0         xor eax,eax
     0042D927   66:8B42 44     mov ax,word ptr ds:[edx+44]
     0042D92B   48           dec eax
     0042D92C   83F8 06       cmp eax,6
     0042D92F   77 3E         ja short PEiD.0042D96F
     0042D931   FF2485 CCD94200   jmp dword ptr ds:[eax*4+42D9CC]

//搜索特征?
0043D5C5   52           push edx
0043D5C6   50           push eax
0043D5C7   53           push ebx
0043D5C8   51           push ecx
0043D5C9   8BCF         mov ecx,edi
0043D5CB   E8 50FFFFFF     call PEiD.0043D520

//获得壳名称
0043B890   50           push eax                                          //PackerNo
0043B891   53           push ebx
0043B892   8D1440         lea edx,dword ptr ds:[eax+eax*2]
0043B895   8B4424 34       mov eax,dword ptr ss:[esp+34]
0043B899   50           push eax
0043B89A   FF1495 643B4000   call dword ptr ds:[edx*4+403B64]

他比较特征码的时候可能是个递归,这个一定要注意,不要死跟下去,第一次到那个函数的时候分析参数,好像是这个函数:

0043D5C5   52           push edx
0043D5C6   50           push eax
0043D5C7   53           push ebx
0043D5C8   51           push ecx
0043D5C9   8BCF         mov ecx,edi
0043D5CB   E8 50FFFFFF     call PEiD.0043D520


这里是pedi v0.92

我跟的是pedi v0.94,特征码确实有点象递归,受教了.0.94版跟0.92有所区别了.我的功力还不够,老大分析看看,呵呵. 
逆向windows“恶搞锁机”程序 对于windows恶搞锁机程序进行了简单的逆向分析,对于同类的程序有一定的借鉴意义,技术不是很高深,但是写的比较详细。 阅读详情

相关推荐

超强的反编译delphi的工程

自用的超级强大的辅助分析工具,专门针对delphi应用,辅助od分析和patch。

逆向分析点滴

Author: void#ph4nt0m.orgIndex========================================1. IDA的使用2. 编译器优化3. Viusal C++, Borland Delphi程序的逆向分析4. 算法识别技巧(常用的加解密算法)1. IDA使用=========================================      工欲善其

4041

Borland Delphi v6.0

Borland Delphi v6.0,可做收藏、学习、研究。

Viusal C++, Borland Delphi程序的分析

Viusal C++, Borland Delphi程序的分析======================================[1] Viusal C++程序的分析先将编译器设定为Visual C++,载入签名如vc32rtf,vc32mfc等.待IDA扫描分析完毕就可以开始工作了.逆向前,先要说下函数有4种调用约定,即stdcall,cdecl,fastcall,pascal.它

legion8169的专栏 1130

borland delphi 7.0经典版本带汉化

borland delphi 7.0经典版本带汉化, 完整安装程序,带汉化和序列号

ROS2初级面试题汇总

总结和收集了一些关于ros2的问题和解答记录

qq_57633442的博客 5575

【逆向学习记录】实验吧CTF1

1 实验吧之“你会么” 1.1 概述 随着对安全的逐渐深入的学习,在接触部分linux知识的过程中,认识了不少CTF的大神,这些大神有不少是顶级赛棍,奈何非科班出身的计算机基础差的要命,只能一点一点积累和记录了 这一系列文章仅仅是自己的学习记录,写博客督促自己不断学习的,其实如果查资料,并没有啥有价值的东西 本次记录的是我的第一次逆向题目,来自实验吧的“你会么”? 1....

卦星的专栏 1174

【WRF工具】WRF 模型输出可视化工具 RIP4

【WRF工具】WRF 模型输出可视化工具 RIP4

WW、forever的博客 1594

逆向分析CrackMe系列——CrackMe004

逆向分析CrackMe系列——CrackMe004 这次进行CrackMe004的逆向分析, 由于003的难度较大,后面再分析, (。・∀・)ノ (本系列的CrackMe资源均来自我爱破解网). 1. 老规矩,先运行程序。发现没有按钮,但是会提示 “注册成功后将会显示朱茵女神的美图一张” : 2. 用PEID进行检查,发现用pehi语言编写,没有加壳 3. 先用插件进行字符串搜索: 4. 发现可疑字符串: 5. 进行跟踪,发现该字符串的下部分为一个函数调用,猜测它为一个窗口函数,在输入正确时进行提示。

草草君 757

材料仿真软件:LAMMPS_(8).温度和压力控制

在 LAMMPS 中,温度和压力的控制是通过多种恒温器和恒压器实现的。Nose-Hoover 恒温器和恒压器因其准确性和广泛适用性而被经常使用,而 Berendsen 恒温器和恒压器则因其计算效率高而适用于初步仿真或粗粒化模型。温度重标和压力重标方法虽然简单,但在某些情况下可以快速调整系统的温度和压力。通过选择合适的控制方法,可以根据具体的需求和系统特性来设计和运行分子动力学仿真,从而获得准确和可靠的结果。在实际应用中,建议先进行初步的仿真以确定合适的控制参数,然后再进行细致的仿真以验证结果的稳定性。

kkchenjj的博客 1696

[毕设项目-大模型微调]现代文翻译文言文【基于LLaMA3.1-8B微调】

教你基于LLaMA3.1-8B微调如何做到现代文翻译文言文

逐梦苍穹的博客 2297

【吾爱】逆向实战crackme160破解记录(一)

最近想拿吾爱上的crackme程序练练手,发现论坛上已经有pk8900总结好的160个crackme,非常方便,而且有很多厉害的前辈已经写好经验贴和方法了,我这里只是做一下自己练习的记录,欢迎讨论学习,感谢吾爱论坛的各位大神。

CK_0ff的博客 2140

LVGL 磁罗盘效果

环境:LVGL 9.x + SDL2,窗口 1280×800。界面文案用英文(默认 Montserrat,无 CJK)。本文按实现顺序讲:先建立两个耦合转动体,再把磁倾角误差从卡面倾斜里推出来,最后用同一套投影把刻度、数字和目标画到卡上。画面上的迟滞、涡流、摆动和读数偏差都来自方程,没有补间动画。

摸鱼专家 108

Oier/CTFer? 9.30学习记录

9.30 (—) The start 合天网安 逆向第一题 打开程序 实验看看 啥都没 打开peid 拖入exe文件 无壳 vc++6.0编写 拖进ida看看 点进去 F5 大法 找到比较字符串答案 v2 为输入的 v3为自带的 v2 v3按byte比较 所以猜测 v3里面存的答案 完成 学会查找关键字符串 和x 查看交叉引用 以及利用F5反汇编 看C 伪代码 吐槽一下指针运用是真的多 ...

qq_21089297的博客 226

剪映专业版关键帧完全教程:从原理到实战的动画必修课

关键帧是视频动画的核心原理。视频由连续静止画面(帧)构成,关键帧记录素材属性变化的起始与结束状态,中间过渡帧由软件自动计算生成。剪映专业版中,视频、音频、文本、贴纸等素材均支持关键帧动画,可调节位置、缩放、旋转、不透明度、音量等参数。操作为:在起始位置点击参数旁菱形按钮添加关键帧,移动播放头后调整参数,系统自动生成第二个关键帧。多属性可独立控制并叠加,实现放大同时淡出等复合效果。通过设定变化起点与终点,关键帧能让静止元素产生移动、缩放、淡入淡出等丰富动态,是视频剪辑从基础拼接进阶创意表达的核心技能。掌握关键

深耕计算机专业知识与技术。 2093

在 FlexSim 中建 AGV 小车模型时,如果设定“每次充电需要 2 小时才能充满”,应该如何配置 AGV 的充电功能?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 882

【jarvisoj刷题之旅】逆向题目软件密码破解-1的writeup

刚开始PEiD查到 百度了一下说是一个壳 把我吓坏了  没见过这玩意 找了几个脱壳机发现都没用    于是直接载入IDA  但好多函数  看不懂   又载入OD 中文搜索引擎发现“你赢了” 于是在段首下断 下图是正读取输入123456789     下面是重要的一个地方 将与我们的input对比的数据抠出来 004377F1             ...

iqiqiya的博客 1522

基于STM32、HAL库的TLV320AIC3204IRHBR音频接口芯片驱动程序设计

* 开启所有数字部分 */#define TLV320AIC3204_REG_LEFT_HEADPHONE_OUT_VOLUME 0x0C /* 左声道耳机输出音量 */#define TLV320AIC3204_REG_DIGITAL_AUDIO_PATH_CONTROL 0x05 /* 数字音频路径控制 */#define TLV320AIC3204_REG_ANALOG_HP_FILTER_CONTROL 0x34 /* 模拟耳机滤波器控制 *//* 最大音量 */

corlin6688的博客 522

逆向笔记(尝试)

观察其中的 MessageBox 字样(我的经验是,最好从下往上找,因为下面的是新弹出的),我们找到了图中箭头所指的那一行(结合那一行下面的 Text 和 Title 里的文字,我们基本上可以确定,这个 MessageBox 就是我们之前弹出没关的那个窗口)按钮验证,此时没有直接弹出错误的提示框,而是触发了断点程序暂停,停在了我们之前打断点的那一行。图中选中的这一行,就是反汇编之后,程序中控制弹出提示框的语句。重新运行程序,输入刚才找到的那串字符,点击按钮验证。Serial重复以上步骤。

AAAwwqy的博客 1163

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

逆向笔记---160CrackMe之001(Acid Burn)

001 Acid burn 0x01 环境与工具 系统:吾爱破解XP SP3 工具:PEiD,OD(ICE版)0x02 程序概览 程序分为两部分。第一部分是Serial/Name,需要输入用户名和注册码:另一部分输入序列号:0x03 暴破流程 首先任意输入用户名和注册码:我们发现会弹出提示框”Sorry,The serial is incorrect!”,于是在OD中F3载入,运行到如上图所示,不着急点确定。此时在OD中F12暂停,然后ALT+F9返回用户领空,再点击确定,程序暂停在这里:很明显,这里是调

G226316的博客 388

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【逆向分析】期末上机

程序链接: 链接:https://pan.baidu.com/s/1N0kQ-QcmJZ6038tBsKJjuA?pwd=6vlu 提取码:6vlu 逆向分析要有清晰的思路和足够的耐心 首先用PEiD对该程序进行查壳 发现该程序被加壳,但是能正常运行 用cmd运行该程序 可以发现提示输入字符串:please enter the username:、please enter the password: FLAG判断结果字符串:Wrong! 初次尝试使用IDA打开该程序 发现不能成功.

qq_45972928的博客 528

[反汇编练习] 160个CrackMe之005

[反汇编练习] 160个CrackMe之005. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注册机的东西。 其中,文章中按照如下逻辑编排(解决如下问题): 1、使用什么环境和工具 2、程序分析 3、思路分析和破解流程 4、注册机的探索 -----------------...

LindaXu1220的博客 363

逆向破解crackme简要分析

小白逆向破解crackme,并简要分析密码验证过程 采用字符串搜索法爆破,采用字符串比较法验证密码

weixin_47118539的博客 3072

软件逆向—— ExifPro 2.1

Exifpro是一款小巧简便的图像浏览工具,比较适合像我这样的新手用于逆向分析。 实验目的 分析Exifpro主要注册函数功能及其实现原理,通过修改,实现对Exifpro的破解。 实验环境 win10虚拟机 PEID 0.95 Ollydbg Exifpro 2.1 实验步骤 查壳 利用PEID程序查壳,发现该程序无壳,这方便了我们的分析判断。 打开软件调试 我们打开Exifpro,查看其版本信息。发现目前是尚未注册登录的版本。 我们打开输入序列号的窗口,尝试向其中输入不同的数值,看看软件会有什么反

AC1145的博客 1201
上一篇: 利用 Debug API 编写一个简单的脱壳机
下一篇: 对Rav2005中HOOK的初步分析
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值