找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 5506|回复: 2

【VB6】从汇编角度看vb的字符串

[复制链接]
发表于 2017-4-10 18:49:33 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
本帖最后由 Ayala 于 2017-4-10 18:52 编辑

写了个简单的C2替换原C2 在原C2目录新建立一个文件夹org把原C2放进去 追加输出.asm文件
参考 https://www.0xaa55.com/forum.php ... tid=1881&ctid=2
  1. char * __stdcall GetCommandLineA();
  2. int main()
  3. {       
  4.         char buf[256]={0};
  5.         sprintf(&buf,"org\\%s -Fa foo.asm",GetCommandLineA());
  6.         return system(&buf);;
  7. }
复制代码

  1. Sub foo(ByVal str1 As String, ByRef str2 As String)
  2.    
  3. End Sub

  4. Sub Main()
  5.     Dim str As String
  6.     str = "0xAA55·技术宅的结界"
  7.     foo str, str
  8. End Sub

  9. Sub too()
  10.     Dim str As String
  11.     str = "0xAA55·技术宅的结界"
  12.     str = "论坛"
  13.    
  14. End Sub
复制代码
  1.        
  2. TITLE        Module1
  3.         .386P
  4. include listing.inc
  5. if @Version gt 510
  6. .model FLAT
  7. else
  8. _TEXT        SEGMENT PARA USE32 PUBLIC 'CODE'
  9. _TEXT        ENDS
  10. _DATA        SEGMENT DWORD USE32 PUBLIC 'DATA'
  11. _DATA        ENDS
  12. CONST        SEGMENT DWORD USE32 PUBLIC 'CONST'
  13. CONST        ENDS
  14. _BSS        SEGMENT DWORD USE32 PUBLIC 'BSS'
  15. _BSS        ENDS
  16. _TLS        SEGMENT DWORD USE32 PUBLIC 'TLS'
  17. _TLS        ENDS
  18. text$1        SEGMENT PARA USE32 PUBLIC ''
  19. text$1        ENDS
  20. ;        COMDAT ?foo@Module1@@AAGXXZ
  21. text$1        SEGMENT PARA USE32 PUBLIC ''
  22. text$1        ENDS
  23. ;        COMDAT ?Main@Module1@@AAGXXZ
  24. text$1        SEGMENT PARA USE32 PUBLIC ''
  25. text$1        ENDS
  26. ;        COMDAT ?too@Module1@@AAGXXZ
  27. text$1        SEGMENT PARA USE32 PUBLIC ''
  28. text$1        ENDS
  29. FLAT        GROUP _DATA, CONST, _BSS
  30.         ASSUME        CS: FLAT, DS: FLAT, SS: FLAT
  31. endif
  32. PUBLIC        ?foo@Module1@@AAGXXZ                                ; Module1::foo
  33. EXTRN        __imp_@__vbaStrCopy:NEAR
  34. EXTRN        __imp_@__vbaFreeStr:NEAR
  35. EXTRN        ___vbaExceptHandler:NEAR
  36. EXTRN        __except_list:DWORD
  37. ;        COMDAT CONST
  38. ; File Module1
  39. CONST        SEGMENT
  40. $S25        DB        02H, 00H
  41.         DB        04H, 00H
  42.         DB        00H, 00H, 00H, 00H
  43.         DD        FLAT:$L24
  44. CONST        ENDS
  45. ;        COMDAT ?foo@Module1@@AAGXXZ
  46. text$1        SEGMENT
  47. _str1$ = 8
  48. _str1$ = -20
  49. __$SEHRec$ = -16
  50. ?foo@Module1@@AAGXXZ PROC NEAR                                ; Module1::foo, COMDAT
  51. ; File Module1
  52. ; Line 1
  53.         push        ebp
  54.         mov        ebp, esp
  55.         sub        esp, 8
  56.         push        OFFSET FLAT:___vbaExceptHandler
  57.         mov        eax, DWORD PTR fs:__except_list
  58.         push        eax
  59.         mov        DWORD PTR fs:__except_list, esp
  60.         sub        esp, 8
  61.         push        ebx
  62.         push        esi
  63.         push        edi
  64.         mov        DWORD PTR __$SEHRec$[ebp+8], esp
  65.         mov        DWORD PTR __$SEHRec$[ebp+12], OFFSET FLAT:$S25
  66.         mov        edx, DWORD PTR _str1$[ebp]
  67.         lea        ecx, DWORD PTR _str1$[ebp]
  68.         mov        DWORD PTR _str1$[ebp], 0
  69.         call        DWORD PTR __imp_@__vbaStrCopy
  70.         push        $L55
  71. $L50:
  72. ; Line 3
  73. $L24:
  74.         lea        ecx, DWORD PTR _str1$[ebp]
  75.         call        DWORD PTR __imp_@__vbaFreeStr
  76. $L53:
  77.         ret        0
  78. $L55:
  79.         mov        ecx, DWORD PTR __$SEHRec$[ebp]
  80.         pop        edi
  81.         pop        esi
  82.         mov        DWORD PTR fs:__except_list, ecx
  83.         pop        ebx
  84.         mov        esp, ebp
  85.         pop        ebp
  86.         ret        8
  87. ?foo@Module1@@AAGXXZ ENDP                                ; Module1::foo
  88. text$1        ENDS
  89. PUBLIC        ?Main@Module1@@AAGXXZ                                ; Module1::Main
  90. EXTRN        ___vba@056067A4:BYTE
  91. ;        COMDAT CONST
  92. ; File Module1
  93. CONST        SEGMENT
  94. $S33        DB        02H, 00H
  95.         DB        04H, 00H
  96.         DB        00H, 00H, 00H, 00H
  97.         DD        FLAT:$L32
  98. CONST        ENDS
  99. ;        COMDAT ?Main@Module1@@AAGXXZ
  100. text$1        SEGMENT
  101. _str$ = -20
  102. __$SEHRec$ = -16
  103. ?Main@Module1@@AAGXXZ PROC NEAR                                ; Module1::Main, COMDAT
  104. ; File Module1
  105. ; Line 5
  106.         push        ebp
  107.         mov        ebp, esp
  108.         sub        esp, 8
  109.         push        OFFSET FLAT:___vbaExceptHandler
  110.         mov        eax, DWORD PTR fs:__except_list
  111.         push        eax
  112.         mov        DWORD PTR fs:__except_list, esp
  113.         sub        esp, 8
  114.         push        ebx
  115.         push        esi
  116.         push        edi
  117.         mov        DWORD PTR __$SEHRec$[ebp+8], esp
  118.         mov        DWORD PTR __$SEHRec$[ebp+12], OFFSET FLAT:$S33
  119. ; Line 7
  120.         mov        edx, OFFSET FLAT:___vba@056067A4
  121.         lea        ecx, DWORD PTR _str$[ebp]
  122.         mov        DWORD PTR _str$[ebp], 0
  123.         call        DWORD PTR __imp_@__vbaStrCopy
  124. ; Line 8
  125.         mov        ecx, DWORD PTR _str$[ebp]
  126.         lea        eax, DWORD PTR _str$[ebp]
  127.         push        eax
  128.         push        ecx
  129.         call        ?foo@Module1@@AAGXXZ                        ; Module1::foo
  130.         push        $L67
  131. $L62:
  132. ; Line 9
  133. $L32:
  134.         lea        ecx, DWORD PTR _str$[ebp]
  135.         call        DWORD PTR __imp_@__vbaFreeStr
  136. $L65:
  137.         ret        0
  138. $L67:
  139.         mov        ecx, DWORD PTR __$SEHRec$[ebp]
  140.         pop        edi
  141.         pop        esi
  142.         mov        DWORD PTR fs:__except_list, ecx
  143.         pop        ebx
  144.         mov        esp, ebp
  145.         pop        ebp
  146.         ret        0
  147. ?Main@Module1@@AAGXXZ ENDP                                ; Module1::Main
  148. text$1        ENDS
  149. PUBLIC        ?too@Module1@@AAGXXZ                                ; Module1::too
  150. EXTRN        ___vba@056067C8:BYTE
  151. ;        COMDAT CONST
  152. ; File Module1
  153. CONST        SEGMENT
  154. $S40        DB        02H, 00H
  155.         DB        04H, 00H
  156.         DB        00H, 00H, 00H, 00H
  157.         DD        FLAT:$L39
  158. CONST        ENDS
  159. ;        COMDAT ?too@Module1@@AAGXXZ
  160. text$1        SEGMENT
  161. _str$ = -20
  162. __$SEHRec$ = -16
  163. ?too@Module1@@AAGXXZ PROC NEAR                                ; Module1::too, COMDAT
  164. ; File Module1
  165. ; Line 11
  166.         push        ebp
  167.         mov        ebp, esp
  168.         sub        esp, 8
  169.         push        OFFSET FLAT:___vbaExceptHandler
  170.         mov        eax, DWORD PTR fs:__except_list
  171.         push        eax
  172.         mov        DWORD PTR fs:__except_list, esp
  173.         sub        esp, 8
  174.         push        ebx
  175.         push        esi
  176.         push        edi
  177.         mov        DWORD PTR __$SEHRec$[ebp+8], esp
  178.         mov        DWORD PTR __$SEHRec$[ebp+12], OFFSET FLAT:$S40
  179. ; Line 13
  180.         mov        esi, DWORD PTR __imp_@__vbaStrCopy
  181.         mov        edx, OFFSET FLAT:___vba@056067A4
  182.         lea        ecx, DWORD PTR _str$[ebp]
  183.         mov        DWORD PTR _str$[ebp], 0
  184.         call        esi
  185. ; Line 14
  186.         mov        edx, OFFSET FLAT:___vba@056067C8
  187.         lea        ecx, DWORD PTR _str$[ebp]
  188.         call        esi
  189.         push        $L77
  190. $L72:
  191. ; Line 16
  192. $L39:
  193.         lea        ecx, DWORD PTR _str$[ebp]
  194.         call        DWORD PTR __imp_@__vbaFreeStr
  195. $L75:
  196.         ret        0
  197. $L77:
  198.         mov        ecx, DWORD PTR __$SEHRec$[ebp]
  199.         pop        edi
  200.         pop        esi
  201.         mov        DWORD PTR fs:__except_list, ecx
  202.         pop        ebx
  203.         mov        esp, ebp
  204.         pop        ebp
  205.         ret        0
  206. ?too@Module1@@AAGXXZ ENDP                                ; Module1::too
  207. text$1        ENDS
  208. END
复制代码


本帖被以下淘专辑推荐:

回复

使用道具 举报

发表于 2017-4-18 12:17:02 | 显示全部楼层
   新人表示没用过VB,一开始就接触的VC   
回复 赞! 靠!

使用道具 举报

发表于 2020-7-8 09:57:37 | 显示全部楼层
本帖最后由 china_shy_wzb 于 2020-7-20 13:33 编辑

学习用汇编角度看vb的字符串,有另一种感觉
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-12-22 09:03 , Processed in 0.038019 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表