首页
社区
课程
招聘
[原创]用HOOK的方法为keynener_Assistant v2.12添加支持拖放功能
发表于: 2020-2-19 18:30 5521

[原创]用HOOK的方法为keynener_Assistant v2.12添加支持拖放功能

2020-2-19 18:30
5521
用HOOK的方法为keynener_Assistant v2.12添加支持拖放功能

keynener_Assistant v2.12是一个非常实用的工具,尤其是其中的密码学算法分析模块,对于密码学分析来说,有很好的辅助作用.

但程序不支持文件拖放,所以使用上不是很方便.

程序有3处需要打开文件路径,一是密码学分析,二是计算文件HASH,三是数据加密和解密

这3处如果支持拖放则会方便很多.


1.分析功能CALL

首先要找到功能CALL,然后要找到其参数.

程序用UPX加壳,脱壳后用DelphiDecompiler分析,找到File Hash计算的Open按钮和密码学算法分析模块的Scan按钮响应事件代码:

(1)计算文件HASH功能,这里需要输入文件路径
Hashing->Calc Hash->File Hash->Open按钮事件响应代码:  

0052AA28   55                     push    ebp
0052AA29   8BEC                   mov     ebp, esp
0052AA2B   6A00                   push    $00
0052AA2D   53                     push    ebx
0052AA2E   56                     push    esi
0052AA2F   57                     push    edi
0052AA30   8BF2                   mov     esi, edx   //ESI=EDX=0205207C  参数1
0052AA32   8BD8                   mov     ebx, eax   //EBX=EAX=02001074  参数2
0052AA34   33C0                   xor     eax, eax
0052AA36   55                     push    ebp

Possible String Reference to: '樽濏?腽_^[Y]?
|
0052AA37   6818AB5200             push    $0052AB18
0052AA3C   64FF30                 push    dword ptr fs:[eax]
0052AA3F   648920                 mov     fs:[eax], esp

Reference to field TForm1.OFFS_1747
|
0052AA42   80BB7A74010000         cmp     byte ptr [ebx+$1747A], $00
0052AA49   740C                   jz      0052AA57

Reference to field TForm1.OFFS_1747
|
0052AA4B   C6837974010001         mov     byte ptr [ebx+$17479], $01
0052AA52   E9AB000000             jmp     0052AB02

Reference to control TForm1.OpenDialog2 : TOpenDialog
|
0052AA57   8B8350070000           mov     eax, [ebx+$0750]
0052AA5D   8B10                   mov     edx, [eax]

Possible reference to virtual method TOpenDialog.OFFS_3C
|
0052AA5F   FF523C                 call    dword ptr [edx+$3C]   //打开文件对话框
0052AA62   84C0                   test    al, al
0052AA64   0F8498000000           jz      0052AB02
0052AA6A   8D55FC                 lea     edx, [ebp-$04]

Reference to control TForm1.OpenDialog2 : TOpenDialog
|
0052AA6D   8B8350070000           mov     eax, [ebx+$0750]

Reference to: Dialogs.TOpenDialog.GetFileName()
|
0052AA73   E82477F1FF             call    0044219C                   //获取文件路径
0052AA78   8B55FC                 mov     edx, [ebp-$04]             //EDX为路径
0052AA7B   B888505E00             mov     eax, $005E5088

|
0052AA80   E8A7A5EDFF             call    0040502C                    //这个CALL是判断是不是修改了默认选项
0052AA85   803D7B625E0001         cmp     byte ptr [$005E627B], $01
0052AA8C   7517                   jnz     0052AAA5                    //如果没有修改默认选项则直接跳到计算HASH的功能CALL
0052AA8E   6A00                   push    $00
0052AA90   668B0D28AB5200         mov     cx, word ptr [$0052AB28]
0052AA97   B203                   mov     dl, $03

Possible String Reference to: 'Some Hash you use are modified!You want to restore default values?'
0052AA99   B834AB5200             mov     eax, $0052AB34

Reference to: Dialogs.MessageDlg(System.AnsiString; Dialogs.TMsgDlgType; System.[Dialogs.TMsgDlgBtn]; Integer)
|
0052AA9E   E80D8BF1FF             call    004435B0
0052AAA3   8BF8                   mov     edi, eax
0052AAA5   4F                     dec     edi
0052AAA6   7551                   jnz     0052AAF9
0052AAA8   8BD6                   mov     edx, esi
0052AAAA   8BC3                   mov     eax, ebx

Reference to : TForm1.BitBtn2Click()
|
0052AAAC   E863B4FFFF             call    00525F14    //以下都是选项
0052AAB1   8BD6                   mov     edx, esi
0052AAB3   8BC3                   mov     eax, ebx

Reference to : TForm1.BitBtn4Click()
|
0052AAB5   E8BAB5FFFF             call    00526074
0052AABA   8BD6                   mov     edx, esi
0052AABC   8BC3                   mov     eax, ebx

Reference to : TForm1.BitBtn5Click()
|
0052AABE   E811B7FFFF             call    005261D4
0052AAC3   8BD6                   mov     edx, esi
0052AAC5   8BC3                   mov     eax, ebx

Reference to : TForm1.BitBtn8Click()
|
0052AAC7   E830B8FFFF             call    005262FC
0052AACC   8BD6                   mov     edx, esi
0052AACE   8BC3                   mov     eax, ebx

Reference to : TForm1.BitBtn9Click()
|
0052AAD0   E87BB9FFFF             call    00526450
0052AAD5   8BD6                   mov     edx, esi
0052AAD7   8BC3                   mov     eax, ebx

Reference to : TForm1.BitBtn11Click()
|
0052AAD9   E8AABBFFFF             call    00526688
0052AADE   8BD6                   mov     edx, esi
0052AAE0   8BC3                   mov     eax, ebx

Reference to : TForm1.BitBtn13Click()
|
0052AAE2   E825BDFFFF             call    0052680C
0052AAE7   8BD6                   mov     edx, esi
0052AAE9   8BC3                   mov     eax, ebx

Reference to : TForm1.BitBtn15Click()
|
0052AAEB   E80CBFFFFF             call    005269FC
0052AAF0   8BD6                   mov     edx, esi
0052AAF2   8BC3                   mov     eax, ebx

Reference to : TForm1.BitBtn17Click()
|
0052AAF4   E8F3C0FFFF             call    00526BEC    //选项结束
0052AAF9   8BD6                   mov     edx, esi
0052AAFB   8BC3                   mov     eax, ebx

Reference to : TForm1.FileHashing()
|
0052AAFD   E8E6FCFFFF             call    0052A7E8    //HASH计算CALL
0052AB02   33C0                   xor     eax, eax
0052AB04   5A                     pop     edx
0052AB05   59                     pop     ecx
0052AB06   59                     pop     ecx
0052AB07   648910                 mov     fs:[eax], edx

** FINALLY
|

Possible String Reference to: '_^[Y]?
|
0052AB0A   681FAB5200             push    $0052AB1F
0052AB0F   8D45FC                 lea     eax, [ebp-$04]
|
0052AB12   E8C1A4EDFF             call    00404FD8
0052AB17   C3                     ret

0052AB18   E9D79DEDFF             jmp     004048F4
0052AB1D   EBF0                   jmp     0052AB0F

** END
|
0052AB1F   5F                     pop     edi
0052AB20   5E                     pop     esi
0052AB21   5B                     pop     ebx
0052AB22   59                     pop     ecx
0052AB23   5D                     pop     ebp
0052AB24   C3                     ret


(2)密码学分析功能CALL
Scanning->San按钮事件响应代码:   

00521734   55                     push    ebp
00521735   8BEC                   mov     ebp, esp
00521737   6A00                   push    $00
00521739   53                     push    ebx
0052173A   8BD8                   mov     ebx, eax
0052173C   33C0                   xor     eax, eax
0052173E   55                     push    ebp
0052173F   688B175200             push    $0052178B
00521744   64FF30                 push    dword ptr fs:[eax]
00521747   648920                 mov     fs:[eax], esp

Reference to control TForm1.OpenDialog1 : TOpenDialog
|
0052174A   8B8330030000           mov     eax, [ebx+$0330]
00521750   8B10                   mov     edx, [eax]

Possible reference to virtual method TOpenDialog.OFFS_3C
|
00521752   FF523C                 call    dword ptr [edx+$3C]
00521755   84C0                   test    al, al
00521757   741C                   jz      00521775
00521759   8D55FC                 lea     edx, [ebp-$04]

Reference to control TForm1.OpenDialog1 : TOpenDialog
|
0052175C   8B8330030000           mov     eax, [ebx+$0330]

Reference to: Dialogs.TOpenDialog.GetFileName()
|
00521762   E8350AF2FF             call    0044219C
00521767   8B55FC                 mov     edx, [ebp-$04]  //EDX为文件路径 参数1

Reference to control TForm1.Traget : TEdit
|
0052176A   8B834C030000           mov     eax, [ebx+$034C]//EAX为参数2,$034C为偏移,PATCH代码会用到

Reference to: Controls.TControl.SetText(System.AnsiString)
|
00521770   E8B394F2FF             call    0044AC28        //调用密码学分析CALL
00521775   33C0                   xor     eax, eax
00521777   5A                     pop     edx
00521778   59                     pop     ecx
00521779   59                     pop     ecx
0052177A   648910                 mov     fs:[eax], edx

** FINALLY
|
0052177D   6892175200             push    $00521792
00521782   8D45FC                 lea     eax, [ebp-$04]

|
00521785   E84E38EEFF             call    00404FD8
0052178A   C3                     ret

0052178B   E96431EEFF             jmp     004048F4
00521790   EBF0                   jmp     00521782

** END
|
00521792   5B                     pop     ebx
00521793   59                     pop     ecx
00521794   5D                     pop     ebp
00521795   C3                     ret

(3)数据加密解密CALL

00540508   55                     push    ebp
00540509   8BEC                   mov     ebp, esp
0054050B   B905000000             mov     ecx, $00000005
00540510   6A00                   push    $00
00540512   6A00                   push    $00
00540514   49                     dec     ecx
00540515   75F9                   jnz     00540510
00540517   53                     push    ebx
00540518   56                     push    esi
00540519   8BD8                   mov     ebx, eax
0054051B   33C0                   xor     eax, eax
0054051D   55                     push    ebp

* Possible String Reference to: '閄B?脎^[嬪]?'
|
0054051E   6897065400             push    $00540697
00540523   64FF30                 push    dword ptr fs:[eax]
00540526   648920                 mov     fs:[eax], esp

* Reference to control TForm1.OpenDialog2 : TOpenDialog
|
00540529   8B8350070000           mov     eax, [ebx+$0750]
0054052F   8B10                   mov     edx, [eax]

* Possible reference to virtual method TOpenDialog.OFFS_3C
|
00540531   FF523C                 call    dword ptr [edx+$3C]   //打开选择文件对话框
00540534   84C0                   test    al, al
00540536   0F8430010000           jz      0054066C
0054053C   8D55FC                 lea     edx, [ebp-$04]

* Reference to control TForm1.OpenDialog2 : TOpenDialog
|
0054053F   8B8350070000           mov     eax, [ebx+$0750]

* Reference to: Dialogs.TOpenDialog.GetFileName()
|
00540545   E8521CF0FF             call    0044219C
0054054A   8B55FC                 mov     edx, [ebp-$04]    //EDX为文件完整路径

* Reference to control TForm1.Edit7 : TEdit
|
0054054D   8B83780C0000           mov     eax, [ebx+$0C78]

* Reference to: Controls.TControl.SetText(System.AnsiString)
|
00540553   E8D0A6F0FF             call    0044AC28          //将文件完整路径设置到控件上
00540558   8D55F4                 lea     edx, [ebp-$0C]

* Reference to control TForm1.Edit7 : TEdit
|
0054055B   8B83780C0000           mov     eax, [ebx+$0C78]   //EBX为结构体指针,$0C78为偏移,PATCH代码会用到

* Reference to: Controls.TControl.GetText()
|
00540561   E892A6F0FF             call    0044ABF8
00540566   8B45F4                 mov     eax, [ebp-$0C]
00540569   8D55F8                 lea     edx, [ebp-$08]

|
0054056C   E85766FDFF             call    00516BC8
00540571   8B45F8                 mov     eax, [ebp-$08]

|
00540574   E81F4DECFF             call    00405298
00540579   8BF0                   mov     esi, eax
0054057B   8D55F0                 lea     edx, [ebp-$10]

* Reference to control TForm1.Edit7 : TEdit
|
0054057E   8B83780C0000           mov     eax, [ebx+$0C78]

* Reference to: Controls.TControl.GetText()
|
00540584   E86FA6F0FF             call    0044ABF8
00540589   8B55F0                 mov     edx, [ebp-$10]

* Possible String Reference to: '.encrypted'
|
0054058C   B8AC065400             mov     eax, $005406AC

|
00540591   E84650ECFF             call    004055DC
00540596   85C0                   test    eax, eax
00540598   756A                   jnz     00540604
0054059A   8D45EC                 lea     eax, [ebp-$14]
0054059D   50                     push    eax
0054059E   8D55E8                 lea     edx, [ebp-$18]

* Reference to control TForm1.Edit7 : TEdit
|
005405A1   8B83780C0000           mov     eax, [ebx+$0C78]

* Reference to: Controls.TControl.GetText()
|
005405A7   E84CA6F0FF             call    0044ABF8
005405AC   8B45E8                 mov     eax, [ebp-$18]

|
005405AF   E8E44CECFF             call    00405298
005405B4   99                     cdq
005405B5   52                     push    edx
005405B6   50                     push    eax
005405B7   8BC6                   mov     eax, esi
005405B9   33D2                   xor     edx, edx
005405BB   290424                 sub     dword ptr [esp], eax
005405BE   19542404               sbb     [esp+$04], edx
005405C2   58                     pop     eax
005405C3   5A                     pop     edx
005405C4   83E801                 sub     eax, +$01
005405C7   83DA00                 sbb     edx, +$00
005405CA   50                     push    eax
005405CB   8D55E4                 lea     edx, [ebp-$1C]

* Reference to control TForm1.Edit7 : TEdit
|
005405CE   8B83780C0000           mov     eax, [ebx+$0C78]

* Reference to: Controls.TControl.GetText()
|
005405D4   E81FA6F0FF             call    0044ABF8           
005405D9   8B45E4                 mov     eax, [ebp-$1C]
005405DC   BA01000000             mov     edx, $00000001
005405E1   59                     pop     ecx

|
005405E2   E8114FECFF             call    004054F8
005405E7   8D45EC                 lea     eax, [ebp-$14]

* Possible String Reference to: '.encrypted'
|
005405EA   BAAC065400             mov     edx, $005406AC

|
005405EF   E8AC4CECFF             call    004052A0
005405F4   8B55EC                 mov     edx, [ebp-$14]

* Reference to control TForm1.Edit8 : TEdit
|
005405F7   8B837C0C0000           mov     eax, [ebx+$0C7C]    //$0C7C为设置输出文件参加的偏移,PATCH代码会用到

* Reference to: Controls.TControl.SetText(System.AnsiString)
|
005405FD   E826A6F0FF             call    0044AC28      //设置输出文件完整路径
00540602   EB68                   jmp     0054066C
00540604   8D45E0                 lea     eax, [ebp-$20]
00540607   50                     push    eax
00540608   8D55DC                 lea     edx, [ebp-$24]

* Reference to control TForm1.Edit7 : TEdit
|
0054060B   8B83780C0000           mov     eax, [ebx+$0C78]

* Reference to: Controls.TControl.GetText()
|
00540611   E8E2A5F0FF             call    0044ABF8
00540616   8B45DC                 mov     eax, [ebp-$24]

|
00540619   E87A4CECFF             call    00405298
0054061E   99                     cdq
0054061F   52                     push    edx
00540620   50                     push    eax
00540621   8BC6                   mov     eax, esi
00540623   33D2                   xor     edx, edx
00540625   290424                 sub     dword ptr [esp], eax
00540628   19542404               sbb     [esp+$04], edx
0054062C   58                     pop     eax
0054062D   5A                     pop     edx
0054062E   83E801                 sub     eax, +$01
00540631   83DA00                 sbb     edx, +$00
00540634   50                     push    eax

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 1
支持
分享
最新回复 (3)
雪    币: 2510
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2020-2-23 13:24
1
雪    币: 2166
活跃值: (3226)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
3
内容比较适合放在软件逆向板块
2020-2-23 14:44
0
雪    币: 707
活跃值: (1301)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
4
文章要是能排版下可能会更精彩
2021-1-27 16:54
0
游客
登录 | 注册 方可回帖
返回
//